// run for each job foreach ($jobs as $job) { $pid = pcntl_fork(); if (! $pid) { $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w") ); $process = proc_open($job['cmd'], $descriptorspec, $pipes); if (is_resource($process)) { echo $procout = stream_get_contents($pipes[1]); echo $procerror = stream_get_contents($pipes[2]); fclose($pipes[1]); fclose($pipes[2]); $return_value = proc_close($process); } break; } }سلام.
این کد بالا رو نگاه کنید، این کد قسمت اجرا شدن اسکریپت های در صف انتظاراجرای یک کلاس cronjob هستش.
که چند تا سوال داشتم در موردش:
1- کلا این کدها روندش چیه؟ خودم در واقع کلیتش رو میدونم که به ترتیب همه اسکریپت های در صف انتظار رو پشت سر هم اجرا میکنه، ولی چون به اون تابع های proc_open و ... تسلط ندارم نمیدونم این کد داره چه کار میکنه از اول تا آخرش!
توابع استفاده شده توش کارشون چیه؟
2-این کدها توی ویندوز هم کار میکنن یا نه؟
3- این کدها توی هاستینگ های معمولی هم اجرا میشن؟ چون فکر میکنم اون تابع proc_open از توابع خطرناک هستش که توی هاستینگ ها میبندنش.
4- من اگر بودم هر کدوم از اسکریپت هایی که میخواستم اجرا بشن رو require_once میکردم، این روش من بهتره یا این کدها؟
5- واسه اینکه حدس میزنم ممکنه این روش توی هاستینگ های اشتراکی مشکل داشته باشه، پیشنهاد میکنید اول یک چک بکنم که اگر تابع proc_open موجود بود همین روش اجرا بشه اگر نبود از روش require_once?