• 技术文章 >后端开发 >php教程

    命令行下 PHP 执行会楞一下

    2016-06-23 13:34:58原创453
    我用的 PHP 是 5.2.13 版本的,
    在 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 本身的问题,不管它了。。。
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:thinkphp这种设置如何设置 下一篇:求一个正则表达式,需用到 负向零宽断言
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• php函数method_exists()与is_callable()的差别 • php如何实现把一个目录上的所有文件都上载上来 • php中require跟include的几点区别 • 五元有偿配置任务,配置出zend studio的调试功能 • PHP编码轨范
    1/1

    PHP中文网