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

Возможно паралельное выполнение 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 всегда
  • Вопрос задан
  • 399 просмотров
Подписаться 5 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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 Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽