最近在研究网页截图。选择了webscreencapture。我把官网上的BAT文件写进了PHP里面。
另外将webscreencapture主程序复制了3个,我想同时抓取3个页面的截图。$cmd1 = 'webscreencapture1.exe  "http://www.bing.com" e:\www\test\1.jpg';
system($cmd1);
$cmd2 = 'webscreencapture2.exe  "http://www.baidu.com" e:\www\test\2.jpg';
system($cmd2);
$cmd3 = 'webscreencapture3.exe  "http://cn.yahoo.com" e:\www\test\3.jpg';
system($cmd3);现在我遇到几个问题,求助于大家。
1。如何使得PHP同时执行$cmd1,$cmd2,$cmd3?而不是根据代码先后,队列执行?
2。webscreencapture有时会产生程序错误,即抓某个页面已经抓取成功之后,还会无数次的重复执行该条system($cmd)命令,类似于死机。如何做到同一条命令执行一次之后,自动终止system($cmd)命令?
3。webscreencapture 官网上没有找到相关的延时代码,我还想截取一些视频网站。如何在system($cmd)里设置延时?
4。是否可以在代码里设置每24小时自动执行一次截图代码?
谢谢。

解决方案 »

  1.   

    顶一下,如何使得PHP同时并列执行$cmd1,$cmd2,$cmd3多条命令?
      

  2.   

     $cmd1 = 'webscreencapture1.exe  "http://www.bing.com" e:\www\test\1.jpg &';
    system($cmd1);试试,异步
      

  3.   

    用AJAX异步试试发3个请求到后台
      

  4.   

    1.如果你是一个php文件里执行三个system($cmd)的话是不能同时执行三条的!php只不支持多线程,如果你想同时执行必须写成三个脚本.
    2.webscreencapture我没用过。但是如果是怕程序无数次的重复执行该条system($cmd)命令,可以写个守护进程,以及一个监控进程。守护进程产生三个分进程进行执行,监控进程进行即使,隔段时间检查下系统是否还存在某分进程,否则认为进程死了,调用命令杀掉。3.没用过这个,所以不清楚。4.在守护进程里设置多长时间循环启动三个分进程就行了。sleep()希望对你有所帮助!
      

  5.   

    $cmd1 = 'webscreencapture1.exe "http://www.bing.com" e:\www\test\1.jpg &';
    system($cmd1);这个是可以同时执行多条的因为是异步,扔到linux了原则上,你可扔n条,只要linux能承受
      

  6.   

    感谢大家的回复,但我这里用的是WINDOWS系统,代码都在PHP里面执行。
      

  7.   

    对了,在看PHP模拟多线程的教程,头有点大,是不是模拟多线程就可以解决我的问题?
    如果是,有谁精通吗?帮忙写个简单点的代码,并解释一下。谢谢。