Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2022, 09:57
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Проверить список URL
<?php
	$lines = file('temp.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

	$multi = curl_multi_init();
	$channels = array();

	foreach ($lines as $line) {
		$ch = curl_init();

		curl_setopt($ch, CURLOPT_URL, $line);
		curl_setopt($ch, CURLOPT_HEADER, false);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

		curl_multi_add_handle($multi, $ch);
 
    	$channels[$line] = $ch;
	}

	$active = null;

	do {
		$mrc = curl_multi_exec($multi, $active);
	} while ($mrc == CURLM_CALL_MULTI_PERFORM);

	while ($active && $mrc == CURLM_OK) {
		if (curl_multi_select($multi) == -1) {
			continue;
		}

		do {
			$mrc = curl_multi_exec($multi, $active);
		} while ($mrc == CURLM_CALL_MULTI_PERFORM);
	}

	foreach ($channels as $channel) {
		echo curl_getinfo($channel, CURLINFO_EFFECTIVE_URL) . ':'. curl_getinfo($channel, CURLINFO_HTTP_CODE) . "\n";
		curl_multi_remove_handle($multi, $channel);
	}


	curl_multi_close($multi);
?>


требуется проверить урлы из файла и вывести коды ответов сервера. как сделать, чтобы редиректы и 404 игнорировались? еще появляется код 0? что это значит?
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2022, 09:37
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Куда делись все спецы?
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2022, 13:36
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,795

Сообщение от Decode
еще появляется код 0? что это значит?
Цитата:
If you connect with the server, then you can get a return code from it, otherwise it will fail and you get a 0
© https://stackoverflow.com/questions/...-code-return-0

Сообщение от Decode
как сделать, чтобы редиректы и 404 игнорировались?
Примерно так:
<?php
	$lines = file('temp.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

	$multi = curl_multi_init();
	$channels = array();

	foreach ($lines as $line) {
		$ch = curl_init();

		curl_setopt($ch, CURLOPT_URL, $line);
		curl_setopt($ch, CURLOPT_HEADER, false);
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

		curl_multi_add_handle($multi, $ch);
 
    	$channels[$line] = $ch;
	}

	$active = null;

	do {
		$mrc = curl_multi_exec($multi, $active);
	} while ($mrc == CURLM_CALL_MULTI_PERFORM);

	while ($active && $mrc == CURLM_OK) {
		if (curl_multi_select($multi) == -1) {
			continue;
		}

		do {
			$mrc = curl_multi_exec($multi, $active);
		} while ($mrc == CURLM_CALL_MULTI_PERFORM);
	}

	foreach ($channels as $channel) {
        $statusCode = (int) curl_getinfo($channel, CURLINFO_HTTP_CODE);
        if (!in_array($statusCode, [0, 404, 301, 302, 307])) {
            echo curl_getinfo($channel, CURLINFO_EFFECTIVE_URL) . ':'. $statusCode . "\n";
        }
        
		curl_multi_remove_handle($multi, $channel);
	}


	curl_multi_close($multi);
?>
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2022, 23:22
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Nexus, благодарю!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Префик URL моделей и сами URL моделей khusamov ExtJS 2 19.05.2016 13:45
переделать функцию adspro AJAX и COMET 5 09.03.2015 04:32
Проверить из чего состоит URL Serezhka Общие вопросы Javascript 3 10.03.2012 10:07
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
переход на выбор сайт через поле ввода url (как убрать функцию "открыть все") ? rashid86 Элементы интерфейса 1 31.03.2011 14:54