php codeigniter как запустить несколько функций одновременно - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть 2 функции, давайте назовем их login и doSomething, и в настоящее время я реализовал их таким образом,

$member=$this->login();
$this->doSomething($member);

// показать страницу приветствия Когда пользователь входит в систему, я хочу что-то сделать, но на это уходит около 20 секунд или больше. Есть ли способы, когда после запуска login () он сразу покажет страницу приветствия, пока метод doSomething () выполняется отдельно. Метод doSomething () не возвращает никаких значений, поэтому не влияет на страницу приветствия.

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Если вы действительно, действительно хотите запустить его параллельно, то вам нужно запустить его в отдельном процессе. Это означает, что вы запускаете его в другой области, поэтому, хотя код, который вы вызываете, может содержать $this->doSomething($member), «this» не будет этим «this».

Если это возможно, тогда ваш вопрос является дубликатом этого (но будьте осторожны - принятый ответ не является хорошим). Обратите внимание, что вы будете работать с проблемами блокировки, если обе части сценария зависят от сеанса.

0 голосов
/ 04 сентября 2018

Пожалуйста, попробуйте следующее.

ob_start();

$member = $this->login();

ob_end_flush();
ob_flush();
flush();

$this->doSomething($member);

Если вы не хотите ничего печатать после входа в систему, вы можете использовать:

ob_start();
$this->doSomething($member);
ob_end_clean();

Также, используя Ajax со страницы входа на фронтальный сайт (после загрузки), вы можете начать обработку $ This-> йоЗотеЬЫпд ($ член); в другом вызове ajax на заднем конце молча.

Существуют и другие способы достижения многопоточности, например, псевдопоточность. Но это самый простой для вашего scenerio:)

Вы также можете проверить WorkerThreads. Их документация с примерами реализации доступна в сети.

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