PHP foreach stack - возможно ли, что функции, вызываемые в a для каждого цикла, все еще работают при вызове следующей итерации - PullRequest
1 голос
/ 08 сентября 2010

У меня проблемы с тем, что cURL не может подключиться к серверу, который возвращает фид xml, и я не уверен, что мой код складывается и вызывает проблему. Возможно ли, что последняя функция, вызываемая в этом цикле foreach, все еще работает, когда следующая итерация цикла возвращается.

Можно ли удостовериться, что все функции в цикле завершены до начала следующей итерации, или foreach все равно делает это по умолчанию? Я попытался установить возвращение true для process_xml () и запустить тест в цикле: if ($ this-> process_xml ($ xml_array)) continue; но это, похоже, не дало эффекта и все равно кажется плохой идеей.

foreach($arrayOfUrls as $url){

    //retrieve xml from url as string.
    if($url_xml_string = $this->getFeedStringUsing_cURL($url)){
        $xml_object = simplexml_load_string($url_xml_string);
        $xml_array = $this->feedStringToArray($xml_object);
        //process the xml.
        $this->process_xml($xml_array);
    }                                 
}

Ответы [ 2 ]

1 голос
/ 08 сентября 2010

Нет, это невозможно.Каждый оператор выполняется и завершается до запуска следующего оператора.

0 голосов
/ 08 сентября 2010

и я не уверен, что мой код складывается

Не уверен? Если это важно для тебя, почему бы тебе не узнать? Не зная, на какой ОС вы работаете, довольно сложно посоветовать, как бы вы это сделали, но netstat может быть хорошей отправной точкой.

Возможно ли, что последняя функция, вызываемая в этом цикле foreach, все еще выполняется

Это невероятно - PHP-скрипты выполняются в одном потоке выполнения, если вы не скажете им не делать этого, но расширение curl позволяет вам определять обратные вызовы в коде php, которые выполняются до завершения операции, а также семейство функций curl_multi_ позволяет запускать php-код во время выполнения запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...