2017-03-07 97 views
-1

什么是自动执行php脚本以读取文件中的1000个链接并生成输出的最简单方法?使用javasctipt自动执行php脚本

我有这个PHP代码来阅读链接,无论他们是否有效。目前我每次都在urls.txt文件中复制/粘贴max 500 links并产生结果,我的服务器不能处理更多。我需要检查15-20K links

<?php 
$handle = fopen("urls.txt", "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 
     $link = trim($line); 
     $isValid = CheckLinks($link); 
     if($isValid){ 
      echo "$link". "<br>"; 

     }else{ 
      echo ""; 
     } 
    } 

    fclose($handle); 
} else { 
    echo "Could not read urls.txt"; 
} 

function CheckLinks($link) { 
    $url = $link; 
    $extpage = file_get_contents($url); 
    $notValid = strpos($extpage,"This page doesn't exists."); 

    return !$notValid; 
} 
?> 

应该添加什么来检查这个链接的数量?

编辑:我想它读取400-500行,并给出输出,然后下500行等。

我是新手,所以请原谅我,如果我问得太多。

+0

http://php.net/manual/en/function.sleep.php –

+0

这对我来说不起作用,因为它会延迟整个脚本,当它启动时会再次加载所有会导致时间到。我希望它读取500行,并给出输出,然后500行。 – Ali

+0

正如我在回答中所说的那样,用一个计数器来表示;如果时间限制是一个问题,然后http://php.net/manual/en/function.set-time-limit.php –

回答

0

你可以在每次检查后,把脚本sleep

while (($line = fgets($handle)) !== false) { 
    $link = trim($line); 
    $isValid = CheckLinks($link); 
    if($isValid){ 
     echo "$link<br>"; 
    } else { 
     echo ""; 
    } 
    sleep(1); // add this line 
} 

如果1个每次迭代第二睡眠实在是太多了,你可以使用你增加了您要检查的人数计数器执行,然后休眠几秒钟并重置计数器。

最后,如果时间限制有问题,您可以使用set_time_limit(0)完全删除限制。