热搜:NVER node 开发 php

这段代码总是在2m左右出现504 Proxy Timeout错误,什么原因?

2024-09-11 18:15:01
这段代码总是在2m左右出现504 Proxy Timeout错误,什么原因?

这段代码当$fucknum比较大时,比如1000时,就会出现504 Proxy Timeout错误,而且报错后程序不再继续执行,好像停止不前了,$fucknum值比较小时不会出现这个错误,什么原因?请各位指点下

function autonewnewegg($arr){            $fucknum=intval($arr['fucknum']);  // # 获取抓取条数的整数值            $outime=$fucknum*2+100;            set_time_limit($outime);//设置脚本执行时间            $nextnum=20;//连续查找10次不存在则终止            $sn=$arr['sn'];                        $acl=explode("-",$sn);            $acl_1=preg_replace('/[^0-9]+/','',$acl[1]);        //二次            $a=$b=0;                                            //二次                        while($fucknum>0){                $arr1 = $arr2 = array();                if($acl[2]<1000&&$acl_1<100){                    $acl[2]=str_pad("$acl[2]",3,'0',STR_PAD_LEFT);                    $acl_1=str_pad("$acl_1",2,'0',STR_PAD_LEFT);                    $acl[1]="c".$acl_1;                    $arr_in=implode("-",$acl);                                $url=$GLOBALS['competitor'][1]['product'].$arr_in.'.htm';                    if($acl[2]==999){                        $acl_1=$acl_1+1;                        $acl[2]=001;                    }else {                        ++$acl[2];                    }                }elseif($acl[0]<=99){                    $acl[0]=str_pad("$acl[0]",2,'0',STR_PAD_LEFT);                    $arr_in=implode("-",$acl);                                        $acl[2]=001;                    $acl_1=01;                    ++$acl[0];                    $url=$GLOBALS['competitor'][1]['product'].$arr_in.'.htm';                }                $str = file_get_contents($url);                if(!$str){                    $fucknum--;                }else{                    $preg ='/href="http:\/\/www\.newegg\.com\.cn\/SubCategory\/(\d*)\.htm">/';                    $preg2 ='/

(.*)<\/h1>/'; $str = iconv("gbk","UTF-8",$str); preg_match($preg,$str,$arr1); preg_match($preg2,$str,$arr2); if(empty($arr1) || empty($arr2)){ $fucknum--; }else{ $price = $this->ocr_newegg($url); if ($price == false||$price=='.'){ $price = $this->ocr_newegg1($url); } if($price == false){ }else{ $autoarr=array('cid'=>$arr1[1],'name_newegg'=>$arr2[1],'price_newegg'=>$price,'sn_newegg'=>$arr_in); $this->addnew_newegg($autoarr); } $fucknum--; } } } return true; }


回复讨论(解决方案)

超时,就没办法了。
set_time_limit(0);
?

让脚本永不超时:set_time_limit(0);

超时,就没办法了。
set_time_limit(0);
?  
已经设置了,$outime是根据$fucknum动态改变的啊,小数据量时怎么不超时,
set_time_limit($outime);//设置脚本执行时间

让脚本永不超时:set_time_limit(0); 设置了,还是会出现那个错误,不是这个原因

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Timeout。 

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Timeout。 难道是要file_get_contents的网站做了限制?

引用 5 楼 heyc1998 的回复:

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Timeout。
难道是要file_get_con……

你可以在每次循环之后都sleep长点时间,看是否还有这样的现象出现!~应该是远程服务器的问题!

引用 6 楼 helloqhq 的回复:

引用 5 楼 heyc1998 的回复:

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Ti…… 如何在报了504 Proxy Timeout错误后,使循环继续执行下去,现在是报错后程序就出问题,好像while循环结束不了,不返回true。

引用 6 楼 helloqhq 的回复:

引用 5 楼 heyc1998 的回复:

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Ti…… 也就是说这个错误有个返回值,如何才能屏蔽这个返回值?

引用 6 楼 helloqhq 的回复:

引用 5 楼 heyc1998 的回复:

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Ti…… 我有两个死帖,随便回复下,给分
http://topic.csdn.net/u/20101128/19/0fedb777-1901-4460-945b-ddc2a8787ba0.html
http://topic.csdn.net/u/20101209/17/438c616b-3132-41bc-a329-86f84e46a72c.html

我也出现这个问题了,后台还没结束,前台就超时了,撸主解决了吗