今天帮朋友查询wordpress执行超级慢的原因,特此记录
开启fpm的慢日志,记录执行超过30秒的脚本
request_slowlog_timeout = 30 slowlog = var/log/slow.log
查看日志
[23-May-2019 17:14:14] [pool www] pid 27993 script_filename = /www/wwwroot/www.yingxiaoshi.com/wp-admin/admin-ajax.php [0x00007fbc9c832ef8] curl_exec() /www/wwwroot/www.yingxiaoshi.com/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php:2352 [0x00007fbc9c832bd0] curl_get_encoding_contents_ap() /www/wwwroot/www.yingxiaoshi.com/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php:2447 [0x00007fbc9c8329b8] curl_get_contents_ap() /www/wwwroot/www.yingxiaoshi.com/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php:2536 [0x00007fbc9c831f80] get_html_string_ap() /www/wwwroot/www.yingxiaoshi.com/wp-content/plugins/wp-autopost-pro/wp-autopost-function.php:5440 [0x00007fbc9c831e30] +++ dump failed
发现是wp-autopost-pro采集插件问题
主要原理是通过PHP创建多个子进程,在子进程中发送进程闹钟信号,然后再监听闹钟信号中继续发送闹钟信号。同时通过父进程设置非阻塞运行。代码如下:<?php /** * 订单任务 */ class Order { &n...
<?php /** * @throws Exception */ function curl() { throw new \Exception('err...
<?php //php7+ define('CONFIG', [ 'MYSQL' => '127.0.0.1',  ...
elasticsearch的操作都是基于http协议的,已经有现成的php类库,composer安装即可。{ "require": { &...
为什么使用队列?因为pop取队列具有原子性。假如我们需要秒杀一个商品id,我们先将商品的库存保存到一个队列。例如:<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6...
(1).管道是干嘛的?管道是用于进程之间通信的,传播或交换信息(2).管道有几种?(2.1).匿名管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。通常是指父子进程关系。(2.2).高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中...