Почекать базу ссылок php скриптом?

Статус
В этой теме нельзя размещать новые ответы.
у тебя хостинг закрыает исходящию связь для скриптов
"fsockopen() has been disabled for security reasons"
попробуй другой хостинг, или через denwer на своем компьютере.
 
я чекаю так:
function checkLink($link) {

$url_info = parse_url($link);

$url_info['port'] = isset($url_info['port']) ? $url_info['port'] : 80;
$url_info['path'] = isset($url_info['path']) ? $url_info['path'] : "/";
$url_info['query'] = isset($url_info['query']) ? "?" . $url_info['query'] : "";

$query = "GET " . $url_info['path'] . " HTTP/1.1\r\n";
$query = $query . "Content-Type: text/html\r\n";
$query = $query . "Host: " . $url_info['host'] . "\r\n";
$query = $query . "Content-length: " . (strlen($request)) . "\r\n\r\n";
$query = $query . $request;
$socket = fsockopen($url_info['host'], $url_info['port'], $errno, $error, 30);
fputs($socket, $query);

$s = fread($socket, 1024);
if( strpos($s, "200 OK") ) {
return true;
} else {
return false;
}

}
 
у тебя хостинг закрыает исходящию связь для скриптов
"fsockopen() has been disabled for security reasons"
попробуй другой хостинг, или через denwer на своем компьютере.

пробовал кроме бесплатного хостинга
ещё на двух платных
не работает к сожалению :(
 
я только на денвере тестил - все работает
скинь мне часть базы в личку и я тебя дам прочеканный вариант

а какую ошибку выдает на платном хостинге ?
 
Не проверял, но должно работать:
<?php

set_time_limit(0);

$data = file_get_contents('links.txt');

$data = explode(PHP_EOL, $data);

foreach($data as $k=>$v) {
if(!checkLink($v)) echo 'BAD LINK: ' . $v '<br />';
}

function checkLink($link) {

$url_info = parse_url($link);

$url_info['port'] = isset($url_info['port']) ? $url_info['port'] : 80;
$url_info['path'] = isset($url_info['path']) ? $url_info['path'] : "/";
$url_info['query'] = isset($url_info['query']) ? "?" . $url_info['query'] : "";

$query = "GET " . $url_info['path'] . " HTTP/1.1\r\n";
$query = $query . "Content-Type: text/html\r\n";
$query = $query . "Host: " . $url_info['host'] . "\r\n";
$query = $query . "Content-length: " . (strlen($request)) . "\r\n\r\n";
$query = $query . $request;
$socket = fsockopen($url_info['host'], $url_info['port'], $errno, $error, 30);
fputs($socket, $query);

$s = fread($socket, 1024);
if( strpos($s, "200 OK") ) {
return true;
} else {
return false;
}

}
?>
 
allsu
вот последняя версия, проверенно
если сервер отвечает - значит ссылка выводится.

PHP:
<?php
error_reporting(0);

function download($site,$url)
{
$fp = fsockopen($site, 80, $errno, $errstr, 60);
if ($fp) {
    $out = "GET ".$url." HTTP/1.0\r\n";
    $out .= "Host: ".$site."\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    $answ = fgets($fp, 128);
    fclose($fp);
    return $answ;
}

};


$handle = fopen("./link.txt", "r");
	while (!feof($handle)) 
{
	$buffer = fgets($handle, 4096);
preg_match("!http://(.*?)/(.*?)\n!si",$buffer,$ok);

$rezult=download($ok[1],"/".$ok[2]);
    if(strstr($rezult,"200 OK")){echo $buffer."\n";};
}
fclose($handle);

?>
 
Вот вариант с file_get_contents.
Да с точки зрения того что страница в случае работоспособности ссылки скачавается полностью это не оч КУЛЛ но зато везде работать будит (кроме шришников естественно на них ни курлы не сокеты не file_get_contents вообще не работает + set_time_limit(0);).

Скрипт работает в режиме без вывода просто забей в фаил test_url.ini URL`s для проверки в формате 1 URL на 1 строку и запусти index.php все после этого можно просто закрыть бравзер как скрипт закончит он перестанет дописывать фаил work.ini в который сохраняются только рабочие URL`s
 

Вложения

  • validator.zip
    634 байт · Просмотры: 3
allsu
вот последняя версия, проверенно
если сервер отвечает - значит ссылка выводится.

PHP:
<?php
error_reporting(0);

function download($site,$url)
{
$fp = fsockopen($site, 80, $errno, $errstr, 60);
if ($fp) {
    $out = "GET ".$url." HTTP/1.0\r\n";
    $out .= "Host: ".$site."\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    $answ = fgets($fp, 128);
    fclose($fp);
    return $answ;
}

};


$handle = fopen("./link.txt", "r");
	while (!feof($handle)) 
{
	$buffer = fgets($handle, 4096);
preg_match("!http://(.*?)/(.*?)\n!si",$buffer,$ok);

$rezult=download($ok[1],"/".$ok[2]);
    if(strstr($rezult,"200 OK")){echo $buffer."\n";};
}
fclose($handle);

?>

к сожалению так и не работает :(
может я что не так делаю :nezn:
если у Вас работает может зальёте на ваш хост этот список

и покажете скрипт в работе
 
allsu, попробуйте мой скрипт, все работает.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху