Я хотел бы открыть 2 url используя open
$url = 'http://xtreme-jumps.eu/demos.txt'; $url2 = 'http://cosy-climbing.net/demoz.txt';
Что-то вроде этого … но это не работает
$handle = @fopen($url, "r"); $handle .= @fopen($url2, "r");
Мне нужно присоединиться к ним, потому что позже я буду искать там
if ($handle) { while (!feof($handle)) { $buffer = fgets($handle); if(strpos($buffer, $map) !== FALSE) $matches[] = $buffer; } fclose($handle); }
благодаря
Вы можете попробовать что-то вроде этого:
$handles=array(); $handles[]=@fopen($url, "r"); $handles[]=@fopen($url2, "r"); foreach($handles as $handle){ while (!feof($handle)) { $buffer = fgets($handle); if(strpos($buffer, $map) !== FALSE) $matches[] = $buffer; } fclose($handle); }
или лучше:
$urls=array( 'http://xtreme-jumps.eu/demos.txt', 'http://cosy-climbing.net/demoz.txt' ); foreach($urls as $url){ $handle=@fopen($url, "r"); while (!feof($handle)) { $buffer = fgets($handle); if(strpos($buffer, $map) !== FALSE) $matches[] = $buffer; } fclose($handle); }
Вы не можете объединять ручки. Вам нужно использовать fread()
(или просто file_get_contents()
), если вы хотите фактическое содержимое файла.
Ну, нет, это не сработает, потому что handle
– это ресурс, а не содержимое веб-страницы, которую вы пытаетесь открыть.
Если вы хотите присоединиться к контенту вместе, вам нужно открыть первый URL-адрес, получить контент, открыть второй и получить контент, а затем присоединиться к контенту.
Вы можете повторно использовать handle
для второго открытого, если вы закончите все свои операции на первом, но вы не можете одновременно иметь один дескриптор, подключенный к двум URL-адресам. Вы, конечно, не можете этого сделать, пытаясь объединить их.
Если вы хотите одновременно обращаться к двум URL-адресам, просто используйте два разных ручка ресурса.
Возможно, вы хотите вместо этого file_get_contents()
? fopen
возвращает дескриптор ресурса, который вы позже используете для чтения (или записи).