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

PHP编程者 2010-12-23 09:58:19
这段代码当$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;
}
...全文
193 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
心如刀割 2013-05-10
  • 打赏
  • 举报
回复
我也出现这个问题了,后台还没结束,前台就超时了,撸主解决了吗
PHP编程者 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 heyc1998 的回复:]

引用 6 楼 helloqhq 的回复:

引用 5 楼 heyc1998 的回复:

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Ti……
[/Quote]我有两个死帖,随便回复下,给分
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
PHP编程者 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 heyc1998 的回复:]

引用 6 楼 helloqhq 的回复:

引用 5 楼 heyc1998 的回复:

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Ti……
[/Quote]也就是说这个错误有个返回值,如何才能屏蔽这个返回值?
PHP编程者 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 heyc1998 的回复:]

引用 6 楼 helloqhq 的回复:

引用 5 楼 heyc1998 的回复:

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

引用 5 楼 heyc1998 的回复:

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

你可以在每次循环之后都sleep长点时间,看是否还有这样的现象出现!~应该是远程服务器的问题!
PHP编程者 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 heyc1998 的回复:]

报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Timeout。
[/Quote]难道是要file_get_contents的网站做了限制?
在-云端 2010-12-23
  • 打赏
  • 举报
回复
报:504 Proxy Timeout的原因很可能是
外网卡在收到了内网卡来自客户端的访问请求以后,在同一时间,马上转发给了目的地网站服务器,但是目的地网站服务器没有及时响应。3秒之后重发一次,6秒之后再重发一次,由于一直没有收到响应内网卡不得不返回给客户端HTTP/1.1 504 Proxy Timeout。
PHP编程者 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 heyc1998 的回复:]

让脚本永不超时:set_time_limit(0);
[/Quote]设置了,还是会出现那个错误,不是这个原因
PHP编程者 2010-12-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferstar 的回复:]

超时,就没办法了。
set_time_limit(0);
?
[/Quote]
已经设置了,$outime是根据$fucknum动态改变的啊,小数据量时怎么不超时,
set_time_limit($outime);//设置脚本执行时间
在-云端 2010-12-23
  • 打赏
  • 举报
回复
让脚本永不超时:set_time_limit(0);
LuciferStar 2010-12-23
  • 打赏
  • 举报
回复
超时,就没办法了。
set_time_limit(0);
?
课程介绍本套课程,大喵将带着大家手把手,编辑每一行代码,使用原生Javascipt及ES6的一些新特性,仿照目前国内非常流行的Vue框架的源码,开发构建一个属于你们自己的MVVM框架。让大家能够很清晰的学习及掌握,模板编译,数据绑定,响应式,文档碎片,观察者模式,发布订阅模式等等,这些Vue的核心知识点,都是怎么回事,它们之间有哪些关联,是如何进行双向数据绑定的等等。在使用vue2.x的核心Object.defineProperty构建完成框架后,大喵也会使用Vue3.0引入的数据劫持的Proxy新特性,来改造我们的MVVM框架,提升我们的框架性能。最终,大喵会手把手带着大家,从0开始配置webpack.config.js配置文件以及引入babel-loader,配置.babelrc文件,转换我们JS文件中的的ES6语法,最终压缩输出我们的MVVM框架库文件。课程目录01 手把手搭建MVVM框架 课程介绍、02 文件结构及基础类创建、03 入口类DamiaoMvvm的实现、04 模板编译、05 元素节点解析编译、06 v-model 数据绑定逻辑梳理、07 v-model 数据绑定实现、08 模板文本编译逻辑梳理、09 模板文本渲染绑定、10 观察者Wather逻辑梳理、11 Wather 逻辑实现、12 Object.defineProperty()、13 defineProperty 小案例、14 observer数据劫持梳理、15 defineProperty数据劫持实现、16 发布订阅类实现、17 Proxy 介绍与概述、18 使用Proxy改造MVVM框架、19 使用Proxy实现响应式、20 webpack 打包配置、21 babel 配置及文件输出、22 Mvvm Proxy 框架打包、23 Mvvm 框架搭建课程总结MVVM框架介绍MVVM是 Model-View-ViewModel 的缩写。mvvm是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。在MVVM架构模式下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

4,249

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧