首頁 >後端開發 >php教程 >命令行下 PHP 执行会楞一下

命令行下 PHP 执行会楞一下

WBOY
WBOY原創
2016-06-23 13:34:581089瀏覽

我用的 PHP 是 5.2.13 版本的,
在 Apache 下运行很快,
就是打开 cmd 命令提示符执行时,会莫名其妙的‘发呆’一下(大约五秒钟的样子)

如一个简单的文件a.php:

<?php echo "hello";


在命令行执行 >php a.php ,大约过一秒钟,看见字符串输出,然后又过了四秒钟,程序结束。

在 php.ini 里去掉扩展 php_curl.dll 时,发现速度又变飞快(回车一按好,程序就已经执行完毕了)

不知道大家有没有碰到过这个现象,我的系统是 win7 64 位的,
因为线上的 PHP 版本是 5.2.14 的,我特地选了个版本相近的(当时下载PHP时,没有找到 5.2.14的。。。)作为本地开发环境用。


回复讨论(解决方案)

这个问题倒不是很严重,就是有时候想写一段简单的代码,在命令行下调试,每次执行都楞个五秒钟,挺纠心的。就是好奇,系统,程序,配置照理说都没有问题啊,反而 Apache 里运行速度倒是挺快的。。。

php 运行时 需要加载 php5ts.dll 以及 php.ini 中指示的所有扩展库和相应的支撑库,这个加载是需要时间的
由于你是命令行执行的,所以当 php.exe 退出时,所有加载的动态链接库都会随之卸载
而 Apache 下就不同,由于 http.exe 没有退出,加载的动态链接库也不会卸载
两比之下自然是 Apache 下快啦

你加载的库多,所以就慢了。
原因见楼上。

google了一下,貌似这还真是一个 bug
https://bugs.php.net/bug.php?id=50410

php 运行时 需要加载 php5ts.dll 以及 php.ini 中指示的所有扩展库和相应的支撑库,这个加载是需要时间的
由于你是命令行执行的,所以当 php.exe 退出时,所有加载的动态链接库都会随之卸载
而 Apache 下就不同,由于 http.exe 没有退出,加载的动态链接库也不会卸载
两比之下自然是 Apache 下快啦



因为我不加载 php_curl.dll 这一个扩展,速度就扛扛的,所以我想应该不是加载库太多造成的。。。

你生产环境是windows么,如果你生产环境是linux,其实你在本地可以用虚拟机来搭环境。现在用vagrant或者boot2docker这些非常方便,而且也不用给virtualbox分多少内存。

你生产环境是windows么,如果你生产环境是linux,其实你在本地可以用虚拟机来搭环境。现在用vagrant或者boot2docker这些非常方便,而且也不用给virtualbox分多少内存。



我是 win7 64位旗舰版, 你说的软件我听都没听说过

google了一下,貌似这还真是一个 bug
https://bugs.php.net/bug.php?id=50410



多少根这个有关了:
It seems to only affect PHP 5.2.11 and 5.2.12, as I wasn't able to reproduce it with 5.2.10 using the exact same php.ini file.
Confirmed on Windows 7 and XP.


google了一下,貌似这还真是一个 bug
https://bugs.php.net/bug.php?id=50410



多少根这个有关了:
It seems to only affect PHP 5.2.11 and 5.2.12, as I wasn't able to reproduce it with 5.2.10 using the exact same php.ini file.
Confirmed on Windows 7 and XP.

嗯,上面的描述和我遇到的情况很像,看来是 PHP 本身的问题,不管它了。。。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn