Heim > Backend-Entwicklung > PHP-Tutorial > 这段代码总是在2m左右出现504 Proxy Timeout错误,什么原因?

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

WBOY
Freigeben: 2016-06-23 14:09:31
Original
1255 Leute haben es durchsucht

这段代码当$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>(.*)<\/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;        }
Nach dem Login kopieren


回复讨论(解决方案)

超时,就没办法了。
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

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

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage