首页  >  文章  >  后端开发  >  这个问题CSDN不能搞定就没人可以搞定了

这个问题CSDN不能搞定就没人可以搞定了

WBOY
WBOY原创
2016-06-23 14:22:211458浏览

本人做了一个采集。 在本地测试,可以正常采集。

放在服务器上,也可以采集。 但是。。。。

目标站,内容更新后,,,服务器上,要过 好几个小时才能采。 (有时要隔一天)

而本地,不用等,只要目标站有数据,就可以采到。


感觉就像采数据的时候,网页没有刷新一样。        




是 服务器 问题? 还是程序不够好?(程序上,每次刷新的时候,都是重新载入页面! ,还加了 随机字符),给公司的技术也看过了,都说程序没问题


 我问了空间商,他说要我报错过去, 我怎么报? 请高手中的高手帮忙解决! 

到底是什么问题?


回复讨论(解决方案)

你是如何控制采集程序工作的?



你Q多少,我联系你。。

QQ288801 谢谢 帮我 看下

 2888801 刚才少了一个 8

QQ288801 谢谢 帮我 看下
CSDN最忌讳留QQ了。有问题就请在贴子里说。能帮的大家会帮助你的。。

对程序 我也不是 很清楚, 。。但问了 搞技术的 同事,程序没问题 所以想让 高手 帮我 看看程序

你可以把采集部分的代码贴出来。

if($_GET["action"]=="cai")
{
$PageUrl = "http://www.xxxxx.com/?id=".time();
$Pagecontent = file_get_contents($PageUrl);

$start = strpos($Pagecontent,"

");
$EndHtml = strpos($Pagecontent,"
");
$lenHtml = $EndHtml - $start;
$Pagecontent = substr($Pagecontent,$start,$lenHtml);

$HtmlAll = "";

preg_match_all('/(.*?)/',$Pagecontent,$UrlList);
for($i=sizeof($UrlList[2]);$i>=0;$i--){
$InUrl = "http://www.zhibo8.com".$UrlList[2][$i];
$TermDay = $_POST["txtdate"];

//$HtmlAll = $HtmlAll.$InUrl."-----".$TermDay."\r\n";

if(strstr($InUrl,$TermDay) && strstr($InUrl,"nba"))
{


$InContent = file_get_contents($InUrl);

//$start1 = strpos($InContent,"
");
//$EndHtml1 = strpos($InContent,"
");
//$lenHtml1 = $EndHtml1 - $start1;
//$InContent = substr($InContent,$start1,$lenHtml1);

preg_match('/(.*?)/',$InContent,$Title); <br> <br> <br> $Cstart = strpos($InContent,"<div>"); <br> $Cend = strpos($InContent,"<!-- JiaThis Button BEGIN -->"); <br> $Lcontent = $Cend - $Cstart; <br> $Content = substr($InContent,$Cstart,$Lcontent); <p class="sougouAnswer"> if($_GET["action"]=="cai") <br> { <br> $PageUrl = "http://www.zhibo8.com/?id=".time(); <br> $Pagecontent = file_get_contents($PageUrl); <br> <br> $start = strpos($Pagecontent,"</p> <div>"); <br> $EndHtml = strpos($Pagecontent,"<div>"); <br> $lenHtml = $EndHtml - $start; <br> $Pagecontent = substr($Pagecontent,$start,$lenHtml); <br> <br> $HtmlAll = ""; <br> <br> preg_match_all('/<a>(.*?)/',$Pagecontent,$UrlList); <br> for($i=sizeof($UrlList[2]);$i>=0;$i--){ <br> $InUrl = "http://www.zhibo8.com".$UrlList[2][$i]; <br> $TermDay = $_POST["txtdate"]; <br> <br> //$HtmlAll = $HtmlAll.$InUrl."-----".$TermDay."\r\n"; <br> <br> if(strstr($InUrl,$TermDay) && strstr($InUrl,"nba")) <br> { <br> <br> <br> $InContent = file_get_contents($InUrl); <br> <br> //$start1 = strpos($InContent,"<div>"); <br> //$EndHtml1 = strpos($InContent,"<div>"); <br> //$lenHtml1 = $EndHtml1 - $start1; <br> //$InContent = substr($InContent,$start1,$lenHtml1); <br> <br> preg_match('/<title>(.*?)/',$InContent,$Title); <br> <br> <br> $Cstart = strpos($InContent,"<div>"); <br> $Cend = strpos($InContent,"<!-- JiaThis Button BEGIN -->"); <br> $Lcontent = $Cend - $Cstart; <br> $Content = substr($InContent,$Cstart,$Lcontent); <p class="sougouAnswer"> 你服务器是固定IP,人家早把你的IP列入黑名单了。。。 </p> <p class="sougouAnswer">  为什么 有时 可以采? </p> <p class="sougouAnswer"> 其实 现在也可以采,但是最新的 内容 采不了。要等,  而本地 不用等     另外,主页昨天显示的内容,今不显示。但 我还可以采到 昨天的,好像 就是 我们看网页 没有刷新一样 </p> <p class="sougouAnswer"> 服务器有缓存? </p> <p class="sougouAnswer"> 应该是ip被禁了 </p> <p class="sougouAnswer"> ip被禁了 我无法理解,,被禁了 就无法采了。服务器有缓存? 我也是这样想的,可程序上做好了这方面的工作。 也不太可能了 </p> <p class="sougouAnswer"> 其实 现在也可以采,但是最新的 内容 采不了。要等,  而本地 不用等     另外,主页昨天显示的内容,今不显示。但 我还可以采到 昨天的,好像 就是 我们看网页 没有刷新一样 <br> <br> 对方将你的服务器ip放入黑名单,并且并不是直接禁止访问,而是让你访问他的旧数据。这就解释了你所有的问题 <br> <br> </p> <p class="sougouAnswer"> 所以忽悠你让你蛋痛的想半天 四处求救,也就达到了他们的目的了。哈哈哈 </p> <p class="sougouAnswer"> 对方肯定是把你的ip列入黑名单了,你可以用adsl的连接方式,定时重连网络,这样你反复更换ip,对方服务器就应付不过来了,给你一段定时重连adsl的脚本 <br> <pre class="sycode" name="code">$i=1;while(true){ sleep(120); if(cutNet()){ sleep(10); if(connectNet()) { echo "成功连接 " .$i." 次\r\n"; } else { echo "未连接 \r\n"; } } else { echo "未成功断开连接\r\n"; } $i++;}/** * ADSL拨号 */function connectNet($cNum=0){ exec("rasdial.exe ADSL adsl_name adsl_pwd",$out1,$ars1); print_r($out1); if (preg_match('/已连接 ADSL/',$out1[3]) or preg_match('/已连接 ADSL/',$out1[4])) { return true; }else{ return false; }}function cutNet(){ if(isConnect()){ exec("Rasdial ADSL /disconnect",$out1,$ars1);//断线 if (preg_match('/已完成/',$out1[0])) { return true; } else { return false; } } else { return true; }}function isConnect(){ exec("Rasdial",$out1,$ars1);//断线 if($out1['0']=='没有连接'){ echo "没有找到连接。。。\r\n"; return false; } return true;}</pre> </p> <p class="sougouAnswer"> 服务器固定IP怎么用ADSL? <br> 用代理吧 <br> 对方肯定是把你的ip列入黑名单了,你可以用adsl的连接方式,定时重连网络,这样你反复更换ip,对方服务器就应付不过来了,给你一段定时重连adsl的脚本 <br> <br> PHP code <br> <br> <br> <br> $i=1; <br> while(true) <br> { <br>     sleep(120); <br>     if(cutNet()){ <br>         sleep(10); <br>         if(connectNet()) <br> …… </p> <p class="sougouAnswer"> 我是 虚拟主机。  日本的IP... 第一次 在这个服务器上 做采集。。。他就知道?   <br> <br> 还有就是 虚拟主机 上 要怎么代理?  </p> <p class="sougouAnswer"> 我是 虚拟主机。  日本的IP... 第一次 在这个服务器上 做采集。。。他就知道?   <br> <br> 还有就是 虚拟主机 上 要怎么代理? <br> <br> 采集多少次知道 这个不是必然的。 <br> 你是虚拟主机你也不能保证你的主机上是否有其他人采集过,或者这个ip以前是否采集过 <br> <br> 最后一个,检查你的虚拟主机时间,如果采集程序有用到时间函数,如果存在时差也可能会产生问题。 <br> </p> <p class="sougouAnswer"> 我是 虚拟主机。 日本的IP... 第一次 在这个服务器上 做采集。。。他就知道?   <br> <br> 还有就是 虚拟主机 上 要怎么代理? <br> <br> 刚刚要求 服务器换了IP  还是一样的问题。。。看来 可能是时间差、那有什么办法吗? </p> <p class="sougouAnswer"> function isConnect() <br> { <br>     exec("Rasdial",$out1,$ars1);//断线 <br>     if($out1['0']=='没有连接'){ <br>         echo "没有找到连接。。。\r\n"; <br>         return false; <br>     } <br>     return true; <br> } <br> <br> </p> <p class="sougouAnswer"> 从描述来看,你的本机和你的服务器,不是在一个地区的吧?我是指省市地区。 <br> <br> 那么也有可能是CDN导致的,不同的省市运营商,虽然访问同一个域名,但访问的主机和内容会出现不一致的情况,CDN的同步需要时间。 <br> <br> 想解决这个问题,在你的本地搞个服务器就行了。 <br> </p> <p class="sougouAnswer"> 从描述来看,你的本机和你的服务器,不是在一个地区的吧?我是指省市地区。 <br> <br> 那么也有可能是CDN导致的,不同的省市运营商,虽然访问同一个域名,但访问的主机和内容会出现不一致的情况,CDN的同步需要时间。 <br> <br> 想解决这个问题,在你的本地搞个服务器就行了。 <br> <br> 也就是 换个服务器 是吗? </p> <p class="sougouAnswer"> 要采集国内的站点,不管从哪个角度说都适合使用国内的主机.再烂也不能烂过功夫墙外的机房了. <br> 好歹咱们也是个局域网啊 <br> <br> 引用 27 楼  的回复: <br> 从描述来看,你的本机和你的服务器,不是在一个地区的吧?我是指省市地区。 <br> <br> 那么也有可能是CDN导致的,不同的省市运营商,虽然访问同一个域名,但访问的主机和内容会出现不一致的情况,CDN的同步需要时间。 <br> <br> 想解决这个问题,在你的本地搞个服务器就行了。 <br> <br> <br> 也就是 换个服务器 是吗? </p> <p class="sougouAnswer"> 从描述来看,你的本机和你的服务器,不是在一个地区的吧?我是指省市地区。 <br> <br> 那么也有可能是CDN导致的,不同的省市运营商,虽然访问同一个域名,但访问的主机和内容会出现不一致的情况,CDN的同步需要时间。 <br> <br> 想解决这个问题,在你的本地搞个服务器就行了。 <br> <br> 是CDN导致 的问题  原来  电的速度不怎么快 </p> <p class="sougouAnswer">  谢谢,,再次想到了这里 </p> </div>
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:该怎么去调用这个类?下一篇:php的session的值可以传给 asp吗?该怎么传值?

相关文章

查看更多