Heim >Backend-Entwicklung >PHP-Tutorial >这个问题CSDN不能搞定就没人可以搞定了

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

WBOY
WBOYOriginal
2016-06-23 14:22:211519Durchsuche

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

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

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

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


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




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


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

到底是什么问题?


回复讨论(解决方案)

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



你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>
Stellungnahme:
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
Vorheriger Artikel:该怎么去调用这个类?Nächster Artikel:php的session的值可以传给 asp吗?该怎么传值?

In Verbindung stehende Artikel

Mehr sehen