PHP Hangs في انتظار برنامج EXEC لإرجاع النتائج من WGET + MySQL Command

StackOverflow https://stackoverflow.com/questions/890083

  •  23-08-2019
  •  | 
  •  

سؤال

متعلق ب: انظر هنا

لقد حصلت على هذا الأمر:

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") & echo \$!");

يعمل الأمر أعلاه بشكل جيد، ومع ذلك ينتظر PHP الفيديو لإنهاء التنزيل قبل الدخول إلى التنزيل التالي. ومع ذلك، يرسل السطر التالي التنزيل إلى الخلفية، وهو ما أحاول تحقيقه من السطر السابق.

exec("wget -O http://domain/file.zip &>/dev/null & echo \$!");

كيف أذهب حول تغيير السطر الأول أعلاه لإرسال التنزيل إلى الخلفية؟

هل كانت مفيدة؟

المحلول

عليك أن تجعلك تستخدم ولترسل العملية إلى الخلفية وإعادة توجيه جميع الإخراج. لذلك تحتاج إلى إضافة

> /dev/null 2>&1 & 

في نهاية الأمر الخاص بك. لذلك يجب أن ينتهي بك الأمر مع شيء مثل هذا:

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") echo \$! > /dev/null 2>&1 &");

يحرر

لجعل الشيء أبسط، يمكنك أيضا نقل WGET والتحديث إلى ملف PHP آخر ستدعوه باستخدام Exec. لذلك سوف ينتهي بك الأمر فقط

exec("php NewFile.php > /dev/null 2>&1 &"); 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top