繁体   English   中英

php cron结束时,wget进程不会停止

[英]wget process doesn't stop when php cron ends

我正在使用以下命令运行cron:

 $command = 'wget -qO- --timeout=0 --tries=1 my_url &';
 $descriptorspec = array(
   0 = > array('pipe', 'w'), // stdin
   1 = > array('pipe', 'w'), // stdout
   2 = > array('pipe', 'w') // stderr
 );
 $proc = proc_open($command, $descriptorspec, $pipes);
 proc_close($proc); 

我必须使用timeout = 0的原因是cron运行的时间范围从几秒到几小时不等。 但是我注意到,如果cron花费的时间超过几分钟,如果我以上述方式运行它,它将继续挂在进程树中(即使工作完成后,cron也会完成任务)。 我试图通过发送来强制停止:

header("Connection: close"); 
ob_end_flush(); 
ob_flush(); 
flush();

我想要实现的是能够确切地知道进程何时完成,因此我可以确定它是因为它完成了工作还是因为某种错误而停止了。

每个cron看起来都类似于:

session_write_close(); 
ignore_user_abort(1);
.... do_the_job .... 
header("Connection: close"); 
ob_end_flush(); 
ob_flush(); 
flush();
exit();

我该如何强迫wget死亡? 我会很高兴在此问题上的任何提示。 我也试过没有运气的卷曲。

在我的特殊情况下,我可以通过使用命令来解决问题:

php5 index.php --uri=controller/method/var1/var2

用于Kohana文件,以及

php5 file_path/file_name.php

对于其他PHP文件。 如果我必须从其他服务器运行文件,则此解决方案将无法工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM