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

Возможно паралельное выполнение 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. заголовок вопроса выбран крайне неудачно.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 160 000 до 250 000 ₽
Greenway Global Новосибирск
от 150 000 до 250 000 ₽