• 技术文章 >后端开发 >PHP问题

    php运行过长导致不响应其他请求

    angryTomangryTom2019-10-16 16:15:52原创708

    需要执行十几分钟的PHP脚本就不要在PHP-FPM里跑了。

    1. 建议运行在PHP-FPM中的PHP脚本用pclose(popen())无阻塞打开一个PHP-CLI进程执行你的脚本。

    2. 执行完成后把消息插入数据库。

    3. 前台通过AJAX定时轮询进行消息通知(类似知乎的消息通知一样)。

    如果你一定要在PHP-FPM中跑这种耗时很长的脚本也不是不可以。

    首先你需要配置Nginx把这个脚本转发给一个预先配置好的独立的PHP-FPM动态进程池(不同的PHP-FPM进程池监听不同的端口)来处理,这样该脚本的执行不会影响到其他PHP-FPM进程池。而且动态进程池(pm = dynamic)能够动态fork出更多的进程来处理脚本,代价就是内存消耗多点,这时你最好配置一个最大进程数(pm.max_children = 20)。

    如果你想让PHP-FPM结束HTTP请求后继续处理业务,可以用fastcgi_finish_request()这个PHP-FPM提供的函数。

    推荐:《PHP教程》

    以上就是php运行过长导致不响应其他请求的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php-fpm 解决办法
    上一篇:php到底好不好 下一篇:java与PHP区别
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• php-fpm是什么• PHP7中php.ini、php-fpm和www.conf 配置• php-fpm工作原理是什么• nginx与php-fpm的关系
    1/1

    PHP中文网