2014-09-05 151 views

回答

4

否..,PHP脚本不会终止它的执行。

是的..它会完成它的执行。

一旦php脚本启动,它会完成它的执行,然后停止。

因为,php运行在服务器端,它不能被客户端简单事件打断,如browser window close

但是,客户端将无法看到输出。

为前:

试试这个代码:

//File Name: xyz.php 
<?php 
$fp=fopen("output.txt","w"); 
$count=0; 
for($count=0;1;$count++){ 
//Infinite loop 
fwrite($fp,"".PHP_EOL."".$count.""); 
} 
fclose($fp); 
?> 

现在测试这个文件,你关闭浏览器窗口后,也它会继续到输出文件(output.txt)内进行打印。

不要忘记从command prompttask manager关闭php脚本虽然,或者它会填满你的硬盘驱动器(我跑了,对于仅仅10秒,在5秒的浏览器被关闭,它消耗160 MB! )。

下面是结果分析:

最初文件大小为:浏览次数,

后五秒钟:76 MB(浏览器是在直到这点)。

七点后秒:125 MB(假设在浏览器关闭延迟,现在的浏览器是完全关闭),

不过10秒后:160 MB(这证明PHP在后台运行:-) )

现在我已经关掉httpd并且尺寸现在是恒定的。

如果你想看到这种情况发生之前fwrite()

为补充usleep

usleep(1*1000*1000); // Sleep for 1 sec. 
fwrite($fp,"".PHP_EOL."".$count.""); 

现在你可以看到它的发生是output.txt文件中。即使关闭浏览器后也是如此。然而,由于延迟因素,上面给出的结果分析现在不适用于此(如果仅考虑文件系数的大小)。

+1

其实是的,他问脚本是否会完成它的执行:D – 2014-09-05 09:51:25

1

那么,PHP是服务器端,它计算所有的代码,然后将结果发送到客户端。所以我想即使关闭浏览器,它也会完成脚本执行。