//设置客户端断开依然运行
ignore_user_abort(true);
//设置脚本不超时
set_time_limit(0);
//死循环每隔1秒访问一次网址
while (true)
{
sleep(1);
@file_get_contents('http://xingxinghan.cn/?id=5');
}上面的代码我在windows下的phpenv集成环境测试通过,但是在线上刷数据时出现异常,nginx 502 后php停止运行,一脸懵逼。看了下网上说的可能,逐一排查:
(1).修改php.ini的max_execution_time时间,我一看就知道这个不行,因为set_time_limit已经设置脚本执行不超时,但是还是测试下嘛,将max_execution_time修改为3600秒,1小时,依然不行。
(2).fpm的request_terminate_timeout配置,request_terminate_timeout 适用于当max_execution_time由于某种原因无法终止脚本的时候,会把这个php-fpm请求干掉,改为1小时果真可以了,哈哈
在fpm中request_terminate_timeout才是真正控制进程执行时间的。
提示:通过ignore_user_abort函数设置了当客户端浏览器关闭当前脚本继续运行,但是依然会受到php脚本超时的时间限制,于是再设置下超时时间即可。启动后会占用一个cgi进程,及其不优雅。
看更详细的版本,看我的另外一篇文章https://blog.20230611.cn/?id=572
为了实现注册机才写的教程,为了批量注册一个网站,注册带有验证码,幸好是文本验证码,但是有session验证,于是POST必须携带cookie。代码如下。<?php class AutoCurl{ ...
第一步:服务端文件<?php $wsdlfile='webservice.wsdl'; ini_set('soap.wsdl_cache_enabled','0'); //关闭WSDL缓存 //001...
Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者(publisher),订阅者(subscriber)和频道(channel)。 发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个...
参数中包含gb2312的字符串,返回结果是false或者null(不同PHP版本具有差异性)代码:<?php $dbms = 'mysql'; $host = '192.168.8.8'; $dbName =&n...
PHP简单定时器可以通过pcntl_signal创建闹钟信号来实现。但是缺点很明显,性能一般,要自己实现守护进程,不支持毫秒级定时器,单进程不支持多个闹钟信号,不能跨平台运行event扩展支持的事件多,性能高。<?php //创建event配置.[空配置] $eventConfig ...
【一】.基本用法首先看看官方对send方法的解释:Sets the return value of the yield expression and resumes the generato...