我想运行如下的wget
shell_exec('wget "'http://somedomain.com/somefile.mp4'"');
sleep(20);
continue my code...
我要的是让PHP等待了shell_exec wget的文件下载到继续与代码的其余部分之前完成。 我不想等待几秒钟的定数。
如何做到这一点,因为我跑了shell_exec wget的,该文件将开始下载,并在后台运行,PHP将继续。
我想运行如下的wget
shell_exec('wget "'http://somedomain.com/somefile.mp4'"');
sleep(20);
continue my code...
我要的是让PHP等待了shell_exec wget的文件下载到继续与代码的其余部分之前完成。 我不想等待几秒钟的定数。
如何做到这一点,因为我跑了shell_exec wget的,该文件将开始下载,并在后台运行,PHP将继续。
请问您的网址包含&字符? 如果是这样,你的wget可能会进入的背景和了shell_exec()可能会立即返回。
例如,如果$网址为“http://www.example.com/?foo=1&bar=2”,你需要确保它在命令行上传递是单引号:
shell_exec("wget '$url'");
否则,外壳会曲解和。
转义命令行参数是在一般一个好主意。 最全面的方式做到这一点是escapeshellarg():
shell_exec("wget ".escapeshellarg($url));
没有了shell_exec等待命令完成 - 所以你不需要睡眠命令不惜一切:
<?php
shell_exec("sleep 10");
?>
# time php c.php
10.14s real 0.05s user 0.07s system
我觉得你的问题很可能在这条线的报价:
shell_exec('wget "'http://somedomain.com/somefile.mp4'"');
它应该是
shell_exec("wget 'http://somedomain.com/somefile.mp4'");