在命令行通過a.php文件里面執(zhí)行passthru方法調(diào)用命令運(yùn)行start.php文件以啟動workman,在以DEBUG模式啟動后按Ctrl+C結(jié)束運(yùn)行時(shí)會報(bào)錯(cuò)誤:
a.php的代碼如下:
passthru('php start.php start');
workman啟動運(yùn)行是沒有問題的,只是按Ctrl+C結(jié)束時(shí)報(bào)錯(cuò)。
PHP Notice: fwrite(): write of 151 bytes failed with errno=32 Broken pipe in /www/wwwroot/vendor/workerman/workerman/Worker.php on line 2263
系統(tǒng)是Linux CentOS7.9
workerman版本是4.1
找到Worker.php 2263那行代碼,
\fwrite($stream, $msg);
\fflush($stream);
改成
if (!feof($stream)) {
\fwrite($stream, $msg);
\fflush($stream);
}
試下是否報(bào)錯(cuò)
改成
set_error_handler(function(){});
if (!feof(self::$outputStream)) {
fwrite(self::$outputStream, $msg);
fflush(self::$outputStream);
}
restore_error_handler();
你給的代碼有問題啊
應(yīng)該是改成
set_error_handler(function(){});
\fwrite($stream, $msg);
\fflush($stream);
restore_error_handler();