相关疑难解决方法(0)

无法使用PHP exec执行PHP脚本

我试图使用PHP exec调用调用一个需要几秒钟(与第三方的Web服务)的脚本.经过多次努力,我把它减少到了经典的hello world例子.调用脚本如下所示:

exec('/usr/bin/php /home/quote2bi/tmp/helloworld.php > /tmp/execoutput.txt 2>&1 &');
Run Code Online (Sandbox Code Playgroud)

当我运行它时,输出execoutput.txt包含调用脚本页面的副本,而不是hello world我预期的.

为什么我不能使用exec执行此PHP脚本?请注意,当我将命令更改为类似命令时ls -l,输出是按预期方式列出的目录.顺便说一下,如果重要的话,我把调用的脚本chmod到了755 ......

更新 - 我将exec调用移动到调用脚本的末尾,至少现在我没有看到在输出中执行调用脚本.感谢海报,我会尝试其中的一些想法.

救命!

谢谢Steve

php exec

15
推荐指数
3
解决办法
7万
查看次数

exec()超时

我正在寻找一种方法来运行超时的PHP进程.目前我只是使用exec(),但它没有提供超时选项.

我也尝试过使用proc_open()和使用stream_set_timeout()生成的管道打开过程,但这也不起作用.

那么,有没有办法用超时运行命令(精确的PHP命令)?(PS:这是针对max_execution_time限制失败的情况,因此无需建议.)

(顺便说一下,我还需要检索进程的返回码.)

php timeout exec

8
推荐指数
3
解决办法
2万
查看次数

PHP为系统调用的脚本设置超时,set_time_limit不起作用

我有一个命令行PHP脚本,使用foreach使用数组的每个成员运行wget请求.这个wget请求有时可能需要很长时间,因此我希望能够设置超时以杀死脚本(例如,如果超过15秒).我已禁用PHP安全模式并在脚本的早期尝试了set_time_limit(15),但它会无限期地继续.更新:感谢Dor指出这是因为set_time_limit()不尊重system()调用.

所以我试图在执行15秒后找到其他方法来杀死脚本.但是,我不确定是否可以检查脚本在同时处于wget请求中间时运行的时间(while循环不起作用).也许用一个定时器分叉一个进程并设置它在一段时间后杀死父进程?

谢谢你的任何提示!

更新: 以下是我的相关代码.$ url是从命令行传递的,是一个包含多个URL的数组(对不起,最初不发布):

foreach( $url as $key => $value){
    $wget = "wget -r -H -nd -l 999 $value";
    system($wget);
    }
Run Code Online (Sandbox Code Playgroud)

php linux windows command-line

3
推荐指数
2
解决办法
5729
查看次数

标签 统计

php ×3

exec ×2

command-line ×1

linux ×1

timeout ×1

windows ×1