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

时间:2014-06-24 10:28:58

标签: php curl cron wget

我使用以下方式运行我的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死?我会很感激这方面的任何提示。我也没试过卷曲。

1 个答案:

答案 0 :(得分:0)

在我的特定情况下,我能够通过命令运行它来克服问题:

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

用于Kohana文件,

php5 file_path/file_name.php

其他php文件。如果我必须从不同的服务器运行文件,这个解决方案将无效。