问题一:
如:if($a = $b * $c){......}
听说应避免在条件语句中进行赋值,我觉得没什么关系啊,程序还是能正常运行。问题二:
我使用socket与C++通信,每次我发的包如果与C++的协议有误的话,socket将会被卡死,这时候必须重启c++那边的程序,我php这边才会恢复正常(卡死主要表现为:所有页面均不能进入,呈加载状态,Apache重启之后,所有页面都可以访问了,但是socket甚至都不能登录了)。有什么办法可以在发包错误的时候自动关闭socket,否则每次出现发包错误的时候就卡死,不仅需要重启Apache,还需要重启c++的服务器,会崩溃的。
如:if($a = $b * $c){......}
听说应避免在条件语句中进行赋值,我觉得没什么关系啊,程序还是能正常运行。问题二:
我使用socket与C++通信,每次我发的包如果与C++的协议有误的话,socket将会被卡死,这时候必须重启c++那边的程序,我php这边才会恢复正常(卡死主要表现为:所有页面均不能进入,呈加载状态,Apache重启之后,所有页面都可以访问了,但是socket甚至都不能登录了)。有什么办法可以在发包错误的时候自动关闭socket,否则每次出现发包错误的时候就卡死,不仅需要重启Apache,还需要重启c++的服务器,会崩溃的。
function xxx()
{
$socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP );
socket_connect ( $socket, "$ip", "$port" );
try
{
$buffer = run(socket_read ( $socket, 16384 ));
return $buffer;
}
catch (Exception $e)
{
echo '输出最终捕捉到的异常:'.$e->getMessage();
socket_close($socket);
return FALSE;
}
} public function run($str)
{
if($str)
{
return $str;
}
throw new Exception(" 这里出错了!");
}运行到run方法的if那里,就卡死了 郁闷啊```````````·