Apache же блокировка запроса orgin
Когда я пытаюсь загрузить две одинаковые страницы со своего сервера в разные вкладки одного и того же браузера, он ждет завершения одной из них, прежде чем запускать другую. Это нормально, но у меня есть процесс cron, который должен вызывать несколько вызовов одного и того же скрипта, и у меня не может быть такого типа блокирующего поведения. Я думаю, это потому, что процесс имеет один и тот же сеанс / соединение с сервером, а поведение по умолчанию - разрешать только один запрос за раз из одного и того же источника... как я могу обойти это? Я хочу, чтобы процесс cron мог запускать вызовы одного из моих сценариев, а apache запускал новый экземпляр целевого сценария для обработки запроса каждого из них. Это возможно?
2 ответа
Используете ли вы стандартные файловые сессии PHP? PHP блокирует сеанс, когда вы делаете session_start()
и держит файл заблокированным до выхода из скрипта, или вы делаете session_write_close()
,
Это предотвращает обслуживание любых ДРУГИХ страниц, поддерживающих сеанс, поскольку они не могут получить доступ к файлу сеанса, пока не будет снята блокировка.
session_write_close () может быть вызван в любой точке скрипта. Все, что он делает, это записывает массив _SESSION, как он есть в данный момент, но оставляет массив доступным для чтения. Вы всегда можете повторно открыть сеанс позже в сценарии, если вам необходимо внести какие-либо изменения.
По сути, вы бы
<?php
session_start(); // populate $_SESSION;
session_write_close(); // relinquish session lock
.... dome some really heavy duty long computations
session_start();
$_SESSION['somekey'] = $new_val;
Я не думаю, что есть какие-либо проблемы с PHP продолжаться, на самом деле мне нравится, как он ведет себя
Используйте продолжить 2; потому что continue будет действовать так же, как тормоз в коммутаторе, и циклы for, while, foreach и т. д. будут продолжать свое движение после выхода из коммутатора.
В следующем примере будет отображаться только 1, потому что я отключаюсь от коммутатора и продолжаю работу foreach.
$ Un_array= массив (1,2); foreach ($ un_array как $num) { Переключатель ($ Num) { Случай 1: //ничего такого перерыв; случай 2: продолжить 2; перерыв; } echo $ num; } выход;