它的主要目的是检查URLS。你必须创建一个404.txt和sites.txt,把你想要的URL放在sites.txt中并运行下面名为grab.php的脚本,在sites.txt中404的任何url都将进入404.txt。请记住,这必须位于相同的文件夹404.txt,sites.txt和grab.php中。
你看到这个PHP脚本不能一直工作,它无法处理数千个URL。它有时可以使用数百或更少,你能帮助改善吗?
<?php
error_reporting(0);
$error_404 = "Not Found";
$list_404 = array();
$sites = file('sites.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach($sites as $site)
{
$response = get_headers($site);
if (strpos($response[0], $error_404))
{
$list_404[]=$site."
";
}
}
file_put_contents('404.txt',$list_404);
?>
答案 0 :(得分:1)
你可以试试这个,看看你哪里出错:
<?php
// Display Errors
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
// Open File
$siteFile = fopen("sites.txt", "r");
// Create Array to Store 404 Error Sites
$errorList = array();
// Reading the File Line by Line
while(!feof($siteFile)){
// Get the Site
$site = (string)trim(fgets($siteFile));
// Get the Headers
$headers = get_headers($site);
// Parse the Status Code from the Header
$status = substr($headers[0], 9, 3);
// If the Status Code is a 404, Push it into the Array
if(intval($status) == 404){
array_push($errorList, $site);
echo "<li><b>{$site} {$headers[0]}</b></li>";
}
// Output the Status Code (Just so you can See it)
else {
echo "<li>{$site} {$headers[0]}</li>";
}
}
// Do File Writing Here
// Close the Sites File
fclose($siteFile);
至少通过这种方式,您可以查看列表中网站的错误和状态。此外,请确保站点文件中的所有URL都使用HTTP格式化
sites.txt:
http://www.google.com
http://www.facebook.com
http://www.gmail.com
http://hotdot.pro/en/404/
HTML输出:
HTTP/1.0 200 OK
HTTP/1.1 302 Found
HTTP/1.0 301 Moved Permanently
HTTP/1.1 404 Not Found
答案 1 :(得分:0)
我通过添加&#34; ini_set(&#39; max_execution_time&#39;,300)修复了上一个脚本;&#34;
<?php
error_reporting(0);
$error_404 = "Not Found";
$list_404 = array();
$sites = file('sites.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach($sites as $site)
{
$response = get_headers($site);
ini_set('max_execution_time', 300);
if (strpos($response[0], $error_404))
{
$list_404[]=$site."
";
}
}
file_put_contents('404.txt',$list_404);
?>