专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

如何异步调用使得不会超时_PHP基础

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/7 0:06:09       共计:3599 浏览

如何异步调用使得不会超时?

PHP作为主流的Web开发脚本语言,它并不适合执行耗时任务,这一点很重要!另外,exec存在安全隐患,一般线上环境都会把它禁用的。

PHP执行耗时任务超时的原因

在LNMP环境中,一个请求如果超过30S以上基本上就会超时了,这个超时主要受Nginx、PHP和PHP-FPM超时时间影响。

1、Nginx超时配置项

nginx.conf里有几个配置是设置Nginx超时的:fastcgi_connect_timeout、fastcgi_send_timeout、fastcgi_read_timeout。

2、PHP超时设置

php.ini配置文件中超时配置项为:max_execution_time。

3、PHP-FPM超时设置

php-fpm.conf配置文件中的超时项为:request_terminate_timeout。

PHP脚本如何设定不超时?

PHP脚本如果想要永不超时,有两种方案:

1、PHP代码中设置内存限制及永不超时,代码如下:

ini_set('memory_limit','3072M');ini_set("max_execution_time", 0);set_time_limit(0);

另外PHP-FPM配置文件(php-fpm.conf)将 request_terminate_timeout 值设大,最后修改Nginx超时时间即可。

2、PHP脚本以CLI模式来运行

耗时任务请勿采用PHP来实现

实际项目中,如果涉及到耗时任务执行基本上都不会用PHP去做这件事,因为PHP执行耗时任务可能会导致内存使用异常,一般采用的方案有:

1、利用Linux的计划任务Crontab来执行

借助crontab可以定制计划任务,周期、定期任务可以用它来管理。

2、借助MQ来实现

借助MQ系统来实现,常用RabbitMQ、ActiveMQ等来异步执行任务。

3、借助Gearman等专业框架来实现

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:PHP中的中括号什么意思_PHP基础 | ·下一条:date函数的参数是哪些_PHP基础

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有