出现的错误如下
<code>swReactorEpoll_wait#270: EPOLLIN handle failed. fd=17. Error: Success[0]. PHP Warning: Unknown: swoole_event: onRead handler error in Unknown on line 0 </code>
我借鉴了这里面的代码 http://www.oschina.net/news/52997/swoole-1-7-3 ,在处理逻辑时我做了一个简单的轮询分配机制,把主进程获取的任务发送给子进程异步处理
<code>php</code><code>function process_function(swoole_process $worker) {
swoole_event_add($worker->pipe, function () use ($worker) {
$recv = $worker->read();
// 处理逻辑 ...
});
}
function dispatch_process($task) {
global $workers;
static $pos;
foreach ($handlers as $handler) {
$pos = NULL === $pos ? 0 : ($pos < count($workers) - 1 ? $pos + 1 : 0);
$workers[$pos][1]->write($task);
}
}
$workers = [];
for ($i = 0; $i < $concurrence; $i ++) {
$process = new swoole_process('process_function');
$pid = $process->start();
$workers[] = [$pid, $process];
echo "create process {$pid}\n";
}
while (true) {
$task = $redis->brPop('message', 10);
if ($task) {
dispatch_process($task[1]);
}
}
</code>我刚刚看了下ulimit -a,是默认的1024,所以猜测是不是这里出错,但看报错也不是很像。大家有什么思路吗?
更新,我已经尝试调整过ulimit,没有任何作用。而且这个问题只会在运行一段时间后触发,且内存也没有泄漏。
PHP 5.5.9,swoole 1.7.17
出现的错误如下
<code>swReactorEpoll_wait#270: EPOLLIN handle failed. fd=17. Error: Success[0]. PHP Warning: Unknown: swoole_event: onRead handler error in Unknown on line 0 </code>
我借鉴了这里面的代码 http://www.oschina.net/news/52997/swoole-1-7-3 ,在处理逻辑时我做了一个简单的轮询分配机制,把主进程获取的任务发送给子进程异步处理
这是易秀购主题网转载的一款原创来至web主题公园的一款wordpress cms主题,非常适合做图片展示,或婚纱摄影类wordpress主题,采用了大气的网格化无缝设计,使列表以格子铺的方式排列,鼠标悬停的可以出现文章的简介。网站上方可以书写自己的广告语,图片也是可以替换掉的,图片会随着鼠标的移动而轻移,并且在鼠标滚动的时候,下面的模块会直接遮盖这个区域,这款wordpress cms主题视觉效果
2
<code>php</code><code>function process_function(swoole_process $worker) {
swoole_event_add($worker->pipe, function () use ($worker) {
$recv = $worker->read();
// 处理逻辑 ...
});
}
function dispatch_process($task) {
global $workers;
static $pos;
foreach ($handlers as $handler) {
$pos = NULL === $pos ? 0 : ($pos < count($workers) - 1 ? $pos + 1 : 0);
$workers[$pos][1]->write($task);
}
}
$workers = [];
for ($i = 0; $i < $concurrence; $i ++) {
$process = new swoole_process('process_function');
$pid = $process->start();
$workers[] = [$pid, $process];
echo "create process {$pid}\n";
}
while (true) {
$task = $redis->brPop('message', 10);
if ($task) {
dispatch_process($task[1]);
}
}
</code>我刚刚看了下ulimit -a,是默认的1024,所以猜测是不是这里出错,但看报错也不是很像。大家有什么思路吗?
更新,我已经尝试调整过ulimit,没有任何作用。而且这个问题只会在运行一段时间后触发,且内存也没有泄漏。
PHP 5.5.9,swoole 1.7.17
你使用的PHP、swoole版本分别是多少?
这个错误表示回调函数执行错误,具体什么原因可能还需要查一下。
此问题的原因是你的PHP代码抛出了异常,未捕获。会导致Swoole的事件回调函数执行失败。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号