你的echo语句是shell中的吧,可以这样
调用shell可以加一个输出重定向,追加一个文件中,调用这个shell需要是后台执行。
然后再使用php调用tail命令每一秒读取这个输出文件显示,这里需要设置缓冲区为0,否则也是会等够4096才会显示的。例如:
exec("/home/web/a.sh >> /home/web/a.log 2>&1 &");
$log = file_get_contents('/home/web/a.log'); 
这里log你可以把每一行都存入数组,然后每次只echo新的行。

解决方案 »

  1.   

    exec和system都是函数
    既然是函数,调用时就一定会等待返回
    除非被调函数设有回调函数既然exec和system都没有提供回调函数接口,那么就只有等待他的结束了
      

  2.   

    感谢楼上两位,结贴晚了,问题已经解决
    类似于1楼方法
    脚本需要后台执行,然后将输出重定向至文件中
    php在while中每1s定时读取文件中新增加的内容,此处我记录了文件的偏移量,再fseek来定位
    最后遇到代表脚本执行成功的输出时,跳出while,结束