命令行下 PHP 执行会楞一下
在 Apache 下运行很快,
就是打开 cmd 命令提示符执行时,会莫名其妙的‘发呆’一下(大约五秒钟的样子)
如一个简单的文件a.php:
在命令行执行 >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 本身的问题,不管它了。。。