stream_select 和 pcntl_signal 有冲突?

klggg 2013-04-19 03:44:35

调用了
pcntl_signal($signal, array(&$this, "handler"))
$mod_fd = stream_select($read,$write , $except , $tv_sec = 5);


运行后报如下错误,删除掉 pcntl_signal 后正常,请教是什么 原因,怎么解决 。


PHP Error[2]: stream_select(): unable to select [4]: 被中断的系统调用 (max_fd=10)

PHP 5.4.6-1ubuntu1.2 (cli) (built: Mar 11 2013 14:54:18)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans




$signals = array(
SIGCHLD => "SIGCHLD",
SIGCLD => "SIGCLD",
SIGINT => "SIGINT",
SIGHUP => "SIGHUP",
SIGQUIT => "SIGQUIT",
);

if (version_compare(phpversion(), "5.3.0", "lt")) {
// tick use required as of PHP 4.3.0
declare(ticks = 1);
}

foreach ($signals as $signal => $name) {
if (!pcntl_signal($signal, array(&$this, "handler"))) {
die("Install signal handler for {$name} failed");
}
}

...

$mod_fd = stream_select($read,$write , $except , $tv_sec = 5);






public function handler($signo) {

Yii::log("handler {$signo} ",CLogger::LEVEL_INFO, __METHOD__);

switch(intval($signo)) {
case SIGCLD:
case SIGCHLD:

Yii::log("SIGCHLD sub proccess ",CLogger::LEVEL_TRACE, __METHOD__);
//正常退出
//declare = 1, that means one signal may be correspond multi-process die
while( ($pid = pcntl_wait($status, WNOHANG|WUNTRACED)) > 0 ) {
if (FALSE === pcntl_wifexited($status)) {
Yii::log("sub proccess {$pid} exited unormally with code {$status}",CLogger::LEVEL_WARNING, __METHOD__);
} else {
Yii::log("sub proccess {$pid} exited normally",CLogger::LEVEL_INFO, __METHOD__);
}
$this->_children--;
}
break;
case SIGINT:
case SIGQUIT:
case SIGHUP:
//异常退出
$this->_cleanup();
exit(0);
break;
default:
break;
}
}





...全文
159 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文档详细配置了一个基于AI的CAD/CAE技术支持智能体,通过线性节点工作流实现从用户提问到专业答复的闭环处理。系统由用户输入、知识检索、大语言模型(LLM)推理和直接回复四个节点构成,强调严格依据知识库内容响应,禁止模型“幻觉”。核心要求包括:在回答前识别工程逻辑矛盾、仅使用【SolidWorks装配体操作规范】.txt中的信息作答、操作步骤需条理清晰并包含安全警示。特别强调变量绑定与上下文占位符{{#context#}}的正确配置,以确保模型可读取知识库。提供了完整的System Prompt模板、变量设置指引及常见问题排查表,并通过典型测试用例验证智能体是否能正确识别矛盾并拒绝不合理请求。; 适合人群:AI平台运维人员、工业软件技术支持工程师、智能制造领域AI应用开发者;具备基本AI工作流编排经验的技术人员。; 使用场景及目标:①构建高可靠性的工程软件问答智能体,防止生成误导性操作指导;②实现对CAD/CAE操作问题的合规化、标准化自动响应;③训练模型识别用户请求中的工程逻辑矛盾,提升服务安全性与专业性。; 阅读建议:部署时须严格按照文档步骤完成知识库上传、变量绑定与提示词占位符插入,重点检查{{#context#}}是否存在以及result变量是否正确关联,避免因配置疏漏导致智能体失效或产生幻觉。

21,889

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧