לשלוח מייל אחרי קבלת התגובה מהשרת - PHP
-
אני שולח מהקלינט בקשה שמחזירה json
לאחר קבלת התגובה אני מעוניין שלישח מייל כל שהואשמתי לב ששליחת מייל לוקחת הרבה יותר זמן
מה שבעצם מעכב את קבלת התשובה לקלינט ופוגע בתצוגה.האם הדרך היחידה היא לפצל בין שני הבקשות (ושהקלינט יבקש את הסקריפט של האימייל עם סיום הבקשה הראשונה - כך זה לא יפריע יעכב את התצוגה)?
או שיש דרך להחזיר תגובה לקלינט (סטטוס 200) ולהמשיך את הסקריפט?
אשמח לתגובתכם
-
@ש-ב-ח
אפשר להפעיל קובץ PHP גם משורת הפקודהphp -e ./foo.php
אפשר להפעיל כל פקודה מתוך הקובץ PHP
למשלshell_exec(ls /home);
ואם רוצים להפעיל פקודה בלי לחכות לפלט
אפשר להוסיף & בסוף הפקודה
(זה עובד גם מהטרמינל)
כל מה שנשאר לעשות זה להפעיל קובץ PHP מתוך exec$shell_command = " php -e ./foo.php >> logFoo.txt & "; shell_exec($shell_command);
בדוגמה הנ"ל הפנתי את כל הפלט לlogFoo.txt
בשביל לדבג במקרה הצורך
אמנם עכשיו יש בעיה במקרה שצריך להעביר משתנים בGET או POST
לסקריפט foo.php .
כתבתי בעבר איזה סקירפט שמעביר את כל הסטרינג שהתקבל בGET
למשתני env
אולי אני יסדר את זה קצת ויעלה לכאן -
@nigun אמר בלשלוח מייל אחרי קבלת התגובה מהשרת - PHP:
אולי אני יסדר את זה קצת ויעלה לכאן
אשמח מאוד, כי אני באמת צריך להעביר פרמטרים.
כרגע הסתדרתי וחילקתי את הבקשה לשניים, ורק אחרי שהבקשה השייכת לתצוגה חוזרת נוצרת הבקשה של שליחת האימייל, כך זה לא מפריעה ומעכב את התצוגה, אמנם בכל מקרה, היה מעניין לראות וללמוד להבא.
תודה מראש.
-
@ש-ב-ח
הנה משהוא שבניתי פעם בשביל קבל טוקן כל שהוא
למערכת בימות המשיח
המאזין נכנס לשלוחה ומופנה מידית לשלוחה הבאה
ובנתיים המערכת יוצרת עבורו טוקן ושומרת במסד נתונים<?php $go_to_folder=$_GET['go_to_folder']; foreach($_GET as $k => $v) { $get .= $k . '=' . $v . '^'; } $get2= htmlspecialchars($get, ENT_QUOTES, 'UTF-8'); $shell_command = " export QUERY_STRING=\" $get2 \" ; php -e ./token.php >> 155.txt & "; shell_exec($shell_command); print "go_to_folder=$go_to_folder"; ?>
וב token.php
<?php $get2=$_SERVER['QUERY_STRING']; $get2 = str_replace("^","&",$get2); parse_str($get2, $_GET); extract($_GET);
וכך כל המשתנים עברו לtoken.php
יכול להיות שאפשר להעביר את זה בדרכים יותר אלגנטיים, אבל זה הכיוון. -
@nigun יש דרך פשוטה להעביר ארגומנטים.
בשרת אינטרנט ניגשים לזה דרך $_GET וכדו'.
ובCLI כותבים נתיב לקובץ רווח פרמטר 0 רווח פרמטר 1 וכו', ואז נגשים לזה: $argv[]/** * @xglobal $argv array * * Array of arguments passed to script * * <p><a href="https://secure.php.net/manual/en/reserved.variables.php"> * https://secure.php.net/manual/en/reserved.variables.php</a> */ $argv = array();