问题一:
如:if($a = $b * $c){......}
听说应避免在条件语句中进行赋值,我觉得没什么关系啊,程序还是能正常运行。问题二:
我使用socket与C++通信,每次我发的包如果与C++的协议有误的话,socket将会被卡死,这时候必须重启c++那边的程序,我php这边才会恢复正常(卡死主要表现为:所有页面均不能进入,呈加载状态,Apache重启之后,所有页面都可以访问了,但是socket甚至都不能登录了)。有什么办法可以在发包错误的时候自动关闭socket,否则每次出现发包错误的时候就卡死,不仅需要重启Apache,还需要重启c++的服务器,会崩溃的。

解决方案 »

  1.   

    1)因为复制语句的结果不是你能预料的2) try{}catch{}
      

  2.   

    谢谢cunningboy     虽然知道有这么个东西  一直没用过
      

  3.   


    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那里,就卡死了    郁闷啊```````````·
      

  4.   

    上面的代码中,写掉了一行,try里面的第一行加代码:socket_write ( $socket, $pack, $len)    //$pack 包体  $len 包体长度跪求高手指点,