Используя fopen дважды - PullRequest
       10

Используя fopen дважды

0 голосов
/ 26 марта 2012

Я хотел бы открыть 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);
}

Спасибо

Ответы [ 4 ]

2 голосов
/ 26 марта 2012

Вы не можете объединить ручки. Вам нужно использовать fread() (или просто file_get_contents()), если вы хотите фактическое содержимое файла.

1 голос
/ 26 марта 2012

Вы можете попробовать что-то вроде этого:

$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);

}
1 голос
/ 26 марта 2012

Ну, нет, это не сработает, потому что handle - это ресурс, а не содержимое веб-страницы, которую вы пытаетесь открыть.

Если вы хотитеприсоединитесь к контенту вместе, вам нужно открыть первый URL, получить контент, открыть второй и получить контент, а затем присоединиться к контенту.

Вы можете повторно использовать handle длявторое, если вы завершаете все свои операции с первым, но у вас не может быть одного дескриптора, подключенного к двум URL-адресам одновременно.Вы, безусловно, не можете сделать это, пытаясь объединить их.

Если вы хотите получить доступ к двум URL-адресам одновременно, просто используйте два разных дескриптора ресурса.

0 голосов
/ 26 марта 2012

Возможно, вы хотите вместо file_get_contents()?fopen возвращает дескриптор ресурса, который вы позже будете использовать для чтения (или записи).

...