- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的服务器维护,企业网站维护,网站维护服务
- (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
 
  
    
| 作者:黑客防线网安PHP维护基地 来源:黑客防线网安PHP维护基地 浏览次数:0 | 
    Web 服务器执行一个脚本,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。 
    而有的时候,我们更本不关心这些耗时的脚本的执行结果,但却还要等他执行完返回,才能继续下一步。    
    那么有没有什么办法,只是简单的触发调用这些耗时的脚本然后就继续下一步,让这些耗时的脚本在服务端慢慢执行?  
      
    接下来,我将使用fscokopen来实现这一功能。 
     
    PHP是支持socket编程的,就是fsockopen, 在以前做CMS的时候,我也曾经用过它做过smtp发信。 
    fscokopen返回一个到远程主机连接的句柄。你可以像使用fopen返回的句柄一样,对她进行写fwrite,读取fgets, fread等操作。 
     
    我们的异步PHP,主要想要的效果就是,触发一个PHP脚本,然后立即返回,留它在服务器端慢慢执行。前面我也写过一篇文章讨论过这个问题。 
那么,我们就可以使用fsockopen连接到本地服务器,触发脚本执行,然后立即返回,不等待脚本执行完成。
  function triggerRequest($url, $post_data = array(), $cookie = array())...{ 
        $method = "GET";  //可以通过POST或者GET传递一些参数给要触发的脚本 
        $url_array = parse_url($url); //获取URL信息,以便平凑HTTP HEADER 
        $port = isset($url_array[’port’])? $url_array[’port’] : 80;  
       
        $fp = fsockopen($url_array[’host’], $port, $errno, $errstr, 30);  
        if (!$fp) ...{ 
                return FALSE; 
        } 
        $getPath = $url_array[’path’] ."?". $url_array[’query’]; 
        if(!empty($post_data))...{ 
                $method = "POST"; 
        } 
        $header = $method . " " . $getPath; 
        $header .= " HTTP/1.1
"; 
        $header .= "Host: ". $url_array[’host’] . "
 "; //HTTP 1.1 Host域不能省略 
        /*
| 我要申请本站:N点 | 黑客防线官网 | | 
| 专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |