Задать вопрос

Возможно паралельное выполнение php?

задача
1) получить время предыдущего запроса
2) сохранить время начала текущего запроса
3) выполнить запрос (2-10 секунд загрузка по http)

$id = 0
       $time = $this->cache->get('vk_obj_start_time'.$id);
        echo '<br>loaded_time'.$time. ' '. date('d.m.Y H:i:s',$time);
        $parameters = array(
            'q' => $this->search_word[$id],
            'count' => 100,
            'start_time'=> $time
        );
        echo '<br>now '.time();
        $this->cache->save('vk_obj_start_time'.$id, time(), 30000);
        return file_get_contents($url);;



вместо ожидаемого $time=0 ( в кеше он 0, заменял на сохранение в базе - тоже самое)
получется $time = текущему времени +-(1-2) секунды всегда по разному

время выполнения file_get_contents 2-10секунд
почему то сначала выполняется $this->cache->save а затем уже только $this->cache->get

функция не работает в цикле, проверял
убираешь file_get_contents все хорошо ( $time=0 в первый раз, во второй раз $time={время прошлого выполнения}
убираешь $this->cache->save все хорошо $time=0 всегда
  • Вопрос задан
  • 398 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 1
@SemenDemon Автор вопроса
решение: запросы к скрипту делались через google chrome (предварительная загрузка браузера)
localhost/cron/vk/load_real/2
localhost/cron/vk/load_real/3
localhost/cron/vk/load_real/4

когда руками меняешь id хром подгружает превью страницы еще до перехода.
то есть:
1) в адресной строке было localhost/cron/vk/load_real/2
2) удаляю 2 (нажатие backspace) localhost/cron/vk/load_real
3) пишу 3 (enter еще не нажимаю) localhost/cron/vk/load_real/3
а хром зараза уже подгрузил страницу localhost/cron/vk/load_real/3
4) нажимаю enter (что бы получить страницу localhost/cron/vk/load_real/3)
в итоге получаю сбитый счетчик времени. скрипт отрабатывается последовательно, как требуется. а в результате вижу страницу time()+1 и создается ложное ощущение паралельного выполнения.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@nick23
Возможно, данная библиотека будет полезна:
ko-process
Если нужно именно параллельное выполнение
Ответ написан
@justpusher
Советую добавить подробное логирование в файл в нескольких местах вашего кода. Логируйте microtime, process id, идентификатор текущего запроса и значения переменных. Это поможет вам разобраться, что происходит.

P.S. заголовок вопроса выбран крайне неудачно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы