最近做一个项目,用到了 PHP 的异步,即使用 popen 和 pclose 新建一个进程。
这个问题发生在使用 built-in Server 的时候,某个页面使用 pclose(popen())开启新进程,在该页面代码全部执行完之后,页面迟迟不能结束,直到异步程序执行完毕之后才会结束页面。
因此我写了两个测试脚本:
sleep.php
<?php
sleep(10);
test.php
<?php
pclose(popen('python ./sleep.py 2>&1 &', 'r'));
使用 Chrome network 看到的结果如下:
Connection Setup TIME
Queueing
3.28 ms
Stalled
2.25 ms
DNS Lookup
0.01 ms
Initial connection
0.19 ms
Request/Response TIME
Request sent
0.08 ms
Waiting (TTFB)
4.39 ms
Content Download
10.03 s
Explanation 10.04 s
使用 Apache httpd 就没有这个问题,多番尝试之后,有点怀疑是 built-in Server 的 bug 了。
求各位大神解惑或者提供思路。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.