有一个异步方法如下:
function hello($message,$test,$txt){    ​
    ​for($k=0;$k<$con;$k++)
    ​  {
       ​ ​$fp=fsockopen('localhost',8080,&$errno,&$errstr,5);
    ​    ​fwrite($fp,"GET /Hello/js_push?message=".$message."&test=".$test."&txt=".$txt." \r\n");
    ​}
}
js_push函数如下:
function js_push(){
    ​  ignore_user_abort();
    ​  set_time_limit(0);
    ​...
    ​fwrite($fps, date('Y-m-d H:i:s').$value." \r\n");
    ​...
}
问题:我想要在js_push里加一个回调函数,使每次的fwrite($fps, date('Y-m-d H:i:s').$value." \r\n");执行完之后,再去执行上面for循环里的第二,第三,,,
要如何实现呢?php异步for

解决方案 »

  1.   

    就是,hello() 这个函数的for循环里的异步,每次调用的都是js_push()函数。我想让每次js_push()函数执行完之后,hello()这个函数的for循环再向下执行。
      

  2.   

    你在 fwrite($fp,"GET /Hello/js_push?m.... 后
    while(fgets($fp));
    就可以了
      

  3.   

    很晕,那直接把js_push()放在hello()的for里面就行了
    function hello($message,$test,$txt){    ​
        ​for($k=0;$k<$con;$k++)
        ​     {
           ​ ​$fp=fsockopen('localhost',8080,&$errno,&$errstr,5);
            js_push();
        ​    ​fwrite($fp,"GET /Hello/js_push?message=".$message."&test=".$test."&txt=".$txt." \r\n");
        ​}
    }这样不行么?
      

  4.   

    什么意思?你不是要等待返回吗?
    执行完之后,再去执行上面for循环里的第二,第三,,,不就是等待的意思吗?
      

  5.   

    如果,我想每次调用hello()函数的时候,就开一个进程,要怎么做?
      

  6.   

    php本身没有多线程、多进程,你说做“异步”我就奇怪了
    所以才说
    就算想模拟实现多线程、进程,也只能依靠系统和外部模块
      

  7.   

    如果,我想每次调用hello()函数的时候,就开一个进程,要怎么做?外部模块?比如呢?什么外部模块比较好用?
    还有,如果我想让for循环10次,再执行一次while(fgets($fp));要怎么实现呢?