作者iwhiori (玉米)
看板PHP
标题Re: [请益] PHP有没有办法送出请求後,不等待回应 …
时间Wed Dec 28 15:52:59 2011
1 <?php
2 for( $i = 5 ; $i < 20 ; $i++){
3 exec("/bin/sleep $i > /dev/null 2>&1 &");
4 }
5 ?>
用网页 request 这个 php 页面
浏览器不会等待 php 结束
在伺服器上面用 ps -ef | grep "sleep" 查找的话
也可以找到很多只 sleep 在执行
> /dev/null 2>&1 &
上面这行是有这样效果的原因
※ 引述《Jerr (身为老爸老妈噜..)》之铭言:
: POSIX的platform可以用pcntl_fork(),
: http://tw2.php.net/manual/en/function.pcntl-fork.php
: 要注意要找机会 wait 或 waitpid, 不然 child exit会变成zombie process.
: 复制sample code:
: $pid = pcntl_fork();
: if ($pid == -1) {
: die('could not fork');
: } else if ($pid) {
: // we are the parent
: pcntl_wait($status); //Protect against Zombie children
: } else {
: // we are the child
: }
: ※ 引述《asika32764 (飞鸟 Asika)》之铭言:
: : 最近想再执行网页程式的时候,
: : call一些网站页面、图片、或是伺服器上的档案执行工作。
: : 希望能让伺服器继续背景执行,但是不要锁住浏览器。
: : 可是我发现无论用 file_get_contents()等内建函式,
: : 还是用system()与exec() call主机功能运行,都还是会在等待回应的时间
: : 锁着浏览器无法继续。
: : 想请问PHP有办法避开等待回应的时间继续执行吗?
: : 类似AJAX这样,真的不行就得要很蠢的用JS来做了...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.147.15.66
※ 编辑: iwhiori 来自: 122.147.15.66 (12/28 15:53)
1F:→ iwhiori:你要把结果输出到档案也可以,反正就是不要放到stdout 12/28 15:56