הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 04-12-15, 21:40   # 1
Tyler
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jul 2013
הודעות: 417

Tyler לא מחובר  

Question לעצור לולאת foreach וסקריפט PHP באמצע..

אוקי אז יש לי מערכת פשוטה שמורכבת מhtml,js וphp

בhtml יש תיבת טקסט שהכותרת שלה היא "נקודות" וכפתור של "שלח".
הכפתור שולח את הנתונים שהוקלדו בתיבת טקסט לjs שמעביר אותם לphp.

הphp בתחילת הקובץ מוגדר בכך שיש קובץ טקסט מסוים על השרת users.txt, באותו קובץ טקסט יש אלפי שמות משתמשים שמפוצלים בשורות:
dan
ben
eric
yosi

הphp בודק שקובץ הטקסט אינו ריק, מקבל את הנתון שהוקלד בתיבת הטקסט בHTML, ומתחיל בלולאת foreach עבור כל שם משתמש שבקובץ טקסט, ויוצר קובץ טקסט חדש שמכיל את שם המשתמש ומספר הנקודות שהוא קיבל, ובנוסף גם שולח מספר פקודות לAPI באתר אחר.

בסופו של דבר כל המשתמשים אמורים לעבור בAPI + להיות נוכחיים בקובץ טקסט החדש שיווצר שיכלול גם את שם המשתמש וגם את הנקודות שהוקלדו עבור כולם.

כלומר אם הקלדתי בדף INDEX כ100 נקודות ולחצתי על "שלח", אז לאחר 10 דקות, יהיה לי קובץ טקסט חדש על השרת בשם .new_users.txt ויכלול בתוכו:
dan 100
ben 100
eric 100
yosi 100

-------
עד כאן הכל בסדר.
עכשיו בטעות הקלדתי מספר נקודות שלא רציתי, הקלדתי 200 במקום 100 ולחצתי על שלח.
הPHP קיבל את הפקודה, התחיל לרוץ ואין לי דרך לעצור אותו אלא רק לחכות שהוא יסתיים ולבזבז המון זמן על יצירת קובץ שאני לא צריך ובזבוז משאבי שרת.

לא משנה מה עשיתי:
- סגרתי את חלון הדפדפן
- שיניתי את שם התיקיה שמכילה את המערכת על השרת
- מחקתי את כל התיקיה מהשרת

הסקריפט פשוט לא נעצר.. ולא נשאר לי מה לעשות חוץ מלחכות לסיומו.

אני מעוניין להוסיף ליד כפתור ה"שלח" עוד כפתור של "עצור" שבמידת הצורך אני אוכל לעצור את הסקריפט כשאני ארצה.

כי במידה ואני מוחק את התיקיה שמכילה את המערכת, אז פשוט התיקיה נוצרת מחדש, בתוכה נוצר קובץ הTXT החדש שמכיל את השם משתמש + הנקודות שהולקדו (new_users.txt) וזהו.. ואני לא מבין איך זה הגיוני, הרי אפילו קובץ הPHP נמחק מהשרת וקובץ הTXT הראשי (users.txt) שממנו נלקחים שמות המשתמשים מלכתחילה נמחק מהשרת..

איך אוכל לעצור את התהליך בצורה הכי פשוטה בלי להכנס לעצירת תהליכי שרת בshell וapache וכו'.

תודה.
__________________
facebook api, js, cpa, cpl, $$$
--------------------
שלח לי הודעה פרטית.

Last edited by Tyler; 04-12-15 at 21:43..
  Reply With Quote
ישן 05-12-15, 00:46   # 2
Programnnd
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 143

Programnnd לא מחובר  

תעשה כפתור שאם תלחץ עליו הוא יחזיר ערך של EXIT או RETURN או DIE מה שמתאים ללולאה והוא יעצור את כל הלולאה ..
או שתעשה לך הודעת ALERT לאישור השליחה משהו בסגנון:
רשמת : 200 נקודות אתה בטוח שברצונך לשלוח טופס זה ? כן / לא
רק לאחר בחירת התשובה הפקודות יתחילו לרוץ שזה נראה לי יותר נחמד .
__________________
XHTML - CSS3 - BOOSTRAP - JQUERY - AJAX - PHP - SQL - SECURITY SQL
benworksites@gmail.com


  Reply With Quote
ישן 05-12-15, 13:13   # 3
while1
חבר חדש
 
מיני פרופיל
תאריך הצטרפות: Jan 2015
הודעות: 34
Send a message via Skype™ to while1

while1 לא מחובר  

מהרגע שהרצת את הסקריפט, השרת הוא זה שמקמפל ומריץ אותו,
ולכן לא משנה אם תמחק את הקובץ או תצא מהדפדפן, השרת ממשיך את העבודה שלו.

(דוגמא דומה - אם אתה שולח קובץ להדפסה במדפסת, אחרי שהמדפסת מתחילה לעבוד אתה יכול לצאת/למחוק את הקובץ וההדפסה עצמה תמשיך! )


בכל מקרה,
פיתרון פשוט שאני יכול להציע כדי לפתור את הבעיה זה ליצור קובץ שיודיע לסקריפט להפסיק לרוץ.
תוסיף לך כפתור בhtml שישלח פקודה לשרת ליצור קובץ לדוגמא: kill_script.

ואז בתוך הלולאה, תבדוק
קוד:
if(file_exists("kill_script"){
unlink("kill_script");
die();
}

ככה, בכל מעבר של הלולאה, זה יבדוק: אם הקובץ קיים - זה ימחק אותו (כדי שיאפשר לך להריץ שוב בפעמים הבאות) ויעצור לגמרי את הסקריפט.
אם הקובץ לא קיים - הלולאה תמשיך לרוץ
  Reply With Quote
ישן 06-12-15, 11:40   # 4
Tyler
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jul 2013
הודעות: 417

Tyler לא מחובר  

ציטוט:
נכתב במקור על ידי while1 צפה בהודעה
מהרגע שהרצת את הסקריפט, השרת הוא זה שמקמפל ומריץ אותו,
ולכן לא משנה אם תמחק את הקובץ או תצא מהדפדפן, השרת ממשיך את העבודה שלו.

(דוגמא דומה - אם אתה שולח קובץ להדפסה במדפסת, אחרי שהמדפסת מתחילה לעבוד אתה יכול לצאת/למחוק את הקובץ וההדפסה עצמה תמשיך! )


בכל מקרה,
פיתרון פשוט שאני יכול להציע כדי לפתור את הבעיה זה ליצור קובץ שיודיע לסקריפט להפסיק לרוץ.
תוסיף לך כפתור בhtml שישלח פקודה לשרת ליצור קובץ לדוגמא: kill_script.

ואז בתוך הלולאה, תבדוק
קוד:
if(file_exists("kill_script"){
unlink("kill_script");
die();
}

ככה, בכל מעבר של הלולאה, זה יבדוק: אם הקובץ קיים - זה ימחק אותו (כדי שיאפשר לך להריץ שוב בפעמים הבאות) ויעצור לגמרי את הסקריפט.
אם הקובץ לא קיים - הלולאה תמשיך לרוץ
תודה רבה, זה נראה פתרון מעולה ופשוט ומהירות הלולאה לא תושפע
__________________
facebook api, js, cpa, cpl, $$$
--------------------
שלח לי הודעה פרטית.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 16:21.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ