我做的是webservice的服务端,现在 客户端 触发两个事件,要我这边来做,因为这两个事件比较费时,我想每次触发的时候都起一个线程,每次运行完后,该线程自动销毁。请问我应该怎么来写呢? 我对多线程不是很了解,只有这30分啦,请大家帮帮忙啊~   
    server端是运行在linux下的,用php来编写。
    另外,客户端触发后不需要等待结果,与server端是异步的。。

解决方案 »

  1.   

    php本身是没有线程机制的,只能按顺序执行的。另想办法吧!
      

  2.   

    php本身没有多线程。
    只能模拟。你去搜一下相关资料吧。
      

  3.   

    我认为你的想法是有问题的,还局限在桌面应用上所谓 客户端触发两个事件 其实是创建了两个 http 连接,两者是独立的,互不相干
    当然如果是同步连接,比如表单,那么一定是要等待返回的
    如果是异步连接,比如ajax,那就不需要去等待了注意:这两个连接将在服务器中产生两个webservice实例,他们也是互不相干的。虽然使用的是同一个程序文件
      

  4.   

    这是异步的问题这是个触发本地服务器异步执行的客户端页面code  可参照下$fp = fsockopen("localhost", 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />";
    } else {
        $out = "GET /00test/test2.php / HTTP/1.1\r\n";
        $out .= "Host: localhost\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp, $out);
        fclose($fp);
        echo 'OK';
    }
    另外需要注意的是 你的服务器端程序要设置客户端断开仍然执行和超时执行
      

  5.   

    服务器处理php的方式本来就是多线程了, php有没多线程都没关系,当cgi调用php时, 会自动在你的服务器系统上生成进程pro1, pro2, pro3
      

  6.   

    谢谢大家  前段时间忙mono 移植的问题了 ,移植没时间~ 现在好了~ 又回到php上啦~  回头还得让大家帮忙呢~