Как пройти по CSV-файлу веб-сайтов и использовать curl для проверки их работы в Интернете?

Этот php-скрипт cron job находит файл csv на моем сервере, а затем перебирает URL-адреса на нем. Он пытается проверить, загружен ли он через https или http или отключен через curl. Этот запрос curl может занимать слишком много времени. Я сделал это по почте через ajax, и он завершил работу, но мне нужно было сделать это с помощью задания cron и файла csv. Есть ли другие возможные решения?

Можете ли вы найти причину, почему это не завершает задачу?

Любая помощь будет отличной.

function url_test($url){

$timeout = 20;
$ch = curl_init();
curl_setopt ($ch, CURLOPT_HEADER  , true);  // we want headers
curl_setopt($ch, CURLOPT_NOBODY  , true);  // we don't need body
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
$http_respond = curl_exec($ch);
$http_respond = trim( strip_tags( $http_respond ) );
$http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );


if ( ( $http_code == "200" ) || ( $http_code == "301")) {

return true;
} else {

return false;

}

}

// запустить на каждом URL

$offline = 0;
$fullcount = 0;
if (($handle = fopen("/pathtocsv/".$csv, "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$num = count($data);
for ($c = 0; $c < $num; $c++)
{

$https = "https://".$data[$c];
$https = strtolower($https);

$http = "http://".$data[$c];
$http = strtolower($http);

$http = preg_replace('/\s+/', '', $http);
$https = preg_replace('/\s+/', '', $https);


$site = $data[$c];


if(url_test($https))
{
$fullcount++;
echo $https. " <br>";

?>

<?php
}
else if(url_test($http))
{
$fullcount++;
echo $http. " <br>";
?>

<?php
}else{

echo $site. " <br>";

$mysqltime = date("Y-m-d H:i:s", $phptime);
try
{
$conn = new PDO("conn info here);

// set the PDO error mode to exception

$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = $conn->prepare($sql);

$sql = "INSERT INTO table (url,csv,related)
VALUES ('$site','$csv',1)";

// use exec() because no results are returned

$conn->exec($sql);
echo "New record created successfully";
}

catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}

}
curl_close( $ch );

}

0

Решение

Вы можете использовать функцию get_headers (). ссылка

Он вернет ответ, похожий на:

Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Sat, 29 May 2004 12:28:13 GMT
[2] => Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6-3e1cb03b"[5] => Accept-Ranges: bytes
[6] => Content-Length: 438
[7] => Connection: close
[8] => Content-Type: text/html
)

который вы можете использовать для проверки по мере необходимости.

Что касается того, почему задача, которую вы выполняете, не завершена. Вы проверили журналы ошибок.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector