PHP 非同步執行

最近與同事討論兩個有趣的參數與函式(ignore_user_abort、fastcgi_finish_request),先留個紀錄

ignore_user_abort (預設 off)

  • 用途:當使用者連線中斷時不影響操作

可透過以下方式操作

  • PHP 碼: ignore_user_abort(true);
  • Nginx 設定:fastcgi_ignore_client_abort off;
  • php.ini:ignore_user_abort=0;

但因階層關係,nginx > PHP,但理論上因為 nginx 已經轉發給 PHP 因此應只要在 PHP 做設定便可生效(尚未測試),猜測其預設 off 原因為一般狀況下使用者斷線不應該再為其服務(例:行動網路瀏覽電商商品頁面),但某些狀況下使用者可能希望有個完整執行(例:交易過程),因此若在有這類多種行為複雜的系統,不應該在 config 中建立起全域設定,而應該透過程式來控制特定需要這類行為的功能。

fastcgi_finish_request

  • 用途:PHP 運作在 FastCGI 下可透過其提早回應瀏覽器
  • PHP 碼:fastcgi_finish_request();
  • 與過去使用 flush 更新進度方式有點像,但本質不一樣

結論

在某些運作需要長時間的操作比如上傳圖片進行其他處理、產生大報表等,可同時使用以上兩個功能,讓其可以快速回應前端又可以完整執行,但正確做法建議還是採用任務排程(例:GearmanResque/Resque-Scheduler等),以避免遇到例外狀況的處理不一。

測試程式

function writeBigFile() { 
    $filepath = "/var/www/html/tmp/" . date("YmdHis") . "-" . rand(1000, 9999) . ".txt"; 
    echo $filepath . "<BR>" . PHP_EOL; $file = fopen($filepath, "a+");
        for ($i = 1; $i <= 10000000; $i++) { 
            fwrite($file, $i . PHP_EOL); 
        } 
}

ignore_user_abort

echo json_encode(array("status" => "ok"), true);
ignore_user_abort(true); // 加與不加 {"status": "ok"} 都會等到 writeBigFile() 執行完才顯示,但該函式可確保使用者中斷後持續把任務完成 
writeBigFile();

fastcgi_finish_request

echo json_encode(array("status" => "ok"), true);
fastcgi_finish_request(); // 該函式會讓 {"status": "ok"} 先回應使用者 
writeBigFile(); 

參考資料

851 comments

  1. Yesterday i got some amazing info about Omega 3 stuff and now i very wanna buy it. But i’m not absolutely sure which pluses will i have. I’ve got this [url=https://buy-omega-3.com] omega 3 info [/url] , and currently i want to purchase it with lowest price. Any idea?

  2. Day ago i got some interesting info about Omega 3 stuff and now i really wanna get it. But i’m not 100% sure which pluses will i have. I’ve found this [url=https://buy-omega-3.com] omega 3 info [/url] , and currently i want to purchase it with good price. Any idea?

  3. It’s actually a great and helpful piece of information. I’m happy that you shared this helpful info with us.
    Please keep us up to date like this. Thanks for sharing.

  4. Yesterday i got some shocking info about Omega 3 stuff and now i really wanna buy it. But i’m not really sure which benefits will i have. I’ve got this [url=https://buy-omega-3.com] omega 3 info [/url] , and now i want to purchase it with lowest price. Any idea?

  5. Day ago i read some amazing info about Omega 3 foods and now i really wanna get it. But i’m not really sure which pluses will i have. I’ve found this [url=https://buy-omega-3.com] omega 3 info [/url] , and currently i want to purchase it with lowest price. Any idea?

  6. Yesterday i got some shocking info about Omega 3 stuff and now i really wanna get it. But i’m not absolutely sure which pluses will i have. I’ve got this [url=https://buy-omega-3.com] omega 3 info [/url] , and currently i wanna buy it with lowest price. Any idea?

  7. Yesterday i read some cool info about Omega 3 stuff and now i very wanna get it. But i’m not 100% sure which benefits will i have. I’ve found this [url=https://buy-omega-3.com] omega 3 info [/url] , and currently i want to buy it with good price. Any idea?

  8. [b]Добро пожаловать на наш сайт[/b]
    [b]V.I.P. Услуги
    OpenVPN
    DoubleVPN Service
    Proxy/Socks Service[/b]
    [url=http://0.00000007.ru/2#vm6CsDX4D1]
    [img]http://0.00000007.ru/3#mT6f9EwAzE[/img]
    [/url]
    ————————
    Неизменно огромное количество socks и proxy серверов онлайн
    на данный момент: 33557 IP в 198 странах
    [b]Высокая анонимность – мы гарантируем, что наши эксклюзивные прокси сервера на все сто процентов анонимны[/b]
    (тоесть не ведут логов и не видоизменяют[b] http заголовки)[/b]

    Шифрация траффика до сокс сервера, собственные технологии туннелирования траффика!
    Сверхнадёжная защита IP и абсолютно всех соединений без приложения VPN
    Возможность защищённого соединения с сокс серверами включена на всех тарифах! Спрятать или сменить ваш IP можно 2-я кликами мышки.

    [b]Совместимо с Windows 2k/2k3/XP/Vista/Seven/Win8
    Совместимо с MacOS, Linux, BSD (100% работоспособность через WINE)
    Совместимо с любыми виртуальными машинами[/b]

    Безусловно САМЫЕ низкие расценки на безлимитный доступ при самом высоком качестве
    Наше правило – больше покупаешь – меньше платишь
    Возможность выбора наиболее подходящего анонимного прокси сервера – фильтрация по маске
    -IP Hostname Language Uptime Country City Region-
    Неизрасходованные прокси не сгорают при завершении срока действия аккуанта.
    ICQ бот на всех абсолютно тарифных планах!
    [b]Высококлассная техподдержка[/b]
    Автоматическая оплата средствами популярных платёжных систем WebMoney , PerfectMoney и BITCOIN
    Полностью Анонимный VPN Сервис
    Доступ по защищённому https протоколу
    [b]Всё что нужно для получения доступа это зарегистрироваться и произвести оплату![/b]

    [url=http://0.00000007.ru/2#Zs16H05PKB]Vip proxy[/url]
    __________
    private browser анонимный vpn прокси браузер
    обход блокировки вк яндекс
    анонимный vpn сервис
    обход блокировки сайтов вконтакте

  9. Day ago i got some amazing info about Omega 3 foods and now i really wanna buy it. But i’m not really sure which benefits will i have. I’ve got this [url=https://buy-omega-3.com] omega 3 info [/url] , and currently i want to get it with good price. Any idea?

  10. [url=http://rrr.regiongsm.ru/33]
    [img]http://rrr.regiongsm.ru/32 [/img]
    [/url]
    Благоустройство и асфальтрование в г. Краснодаре и г.Новокубанск. Решение любого вопроса по Благоустройству Краснодара и края. Быстро

    Подробнее… Благоустройство-Краснодар.РФ … +7 (861) 241-23-45
    ___________________________
    75 благоустройство
    асфальтирование в костроме
    муп благоустройство в петровске
    ткп 45-3.02-69-2007 02250 благоустройство территорий озеленение правила проектирования и устройств
    новости благоустройство волгоград

  11. Yesterday i got some shocking info about Omega 3 foods and now i really wanna buy it. But i’m not 100% sure which benefits will i have. I’ve found this [url=https://buy-omega-3.com] omega 3 info [/url] , and now i wanna get it with lowest price. Any idea?

  12. Howdy this is somewhat of off topic but I was wanting to know if blogs use
    WYSIWYG editors or if you have to manually code with HTML.
    I’m starting a blog soon but have no coding know-how so I wanted to get advice from someone with experience.
    Any help would be enormously appreciated!

  13. Нужна помощь. В квартире завелись клопы
    Напишите кто сталкивался?. Я нашел фирму в Энгельсе по уничтожению насекомых с положительными отзывами
    Самостоятельно пробовал разные средства от насекомых, не помогло.
    ——

    Добавлено 03.07.2017 13:00
    Кому надо ссылку [http://bio64.ru/?page_id=193]уничтожение тараканов в саратове[/url]

    [url=http://www.bio64.ru][img]http://bio64.ru/wp-content/themes/wordpress-shabloni.ru.spectrum/wordpress-shabloni.ru.spectrum/images/logo.png[/img][/url]

  14. Yesterday i got some amazing information about Omega 3 foods and now i really want to buy it. But i want a best, only premium omega 3 fish oil. I’ve found this [url=https://www.omega-3.club/premium-fish-oil-carlson.html] premium omega 3 fish oil [/url] url. What do you think about this brand?

  15. Hi, I do believe your blog might be having browser compatibility problems.
    When I look at your website in Safari, it looks fine however, when opening in I.E.,
    it’s got some overlapping issues. I merely wanted to provide
    you with a quick heads up! Other than that, great site!

  16. Some time ago i learned new interesting information about Omega 3 stuff and now i very wanna buy it. But i need a best, some premium omega 3 fish oil. I’ve got this [url=https://www.omega-3.club/premium-fish-oil-carlson.html] premium omega 3 fish oil [/url] url. What do you know about this brand?

  17. В данное время только лишь нерадивый не зарабатывает в глобальной сети интернет! ©
    Каким образом бросить быть тем «ленивцем», что еще не получает доход от глобальной сети интернет? Ответ на настоящий вопрос можно найти на все тех же просторах веба. Но, основной загвоздкой является вопрос не «Как заработать?», а вопрос «Какой собственно тип извлечения доходов нам больше всего подойдет?». Среди большого количества разновидностей заработка в мировой сети особенно интересными для нас останутся те, что не требуют капиталовложения финансов и титанических усилий для организации бизнес процесса. Таким видом зарабатывания является использование партнерских и реферальных программ инвестиционных и брокерских контор. Доход от ведения торговли на экономических рынках имеет возможность оказаться весьма высокой, что вынуждает людей массами бежать к брокерам и заводить к ним деньги. А с этих денег партнер способен получить большую сумму в виде партнерских отчислений. Став партером и разместив ссылочку на своем интернет-ресурсе или на всевозможных интернет-форумах (для простого юзера интернета) сегодня можно иметь постоянный доход без вложения денег и усилий. Как это все работает?

    Возьмём для примера компанию ExpertOption – брокера бинарных опционов.

    [url=http://bit.ly/2tRqLgJ#Xekrr586E1]Ссылка на брокера[/url]

    [url=http://bit.ly/2uPwBMI#ey4ergg5g5]Ссылка на партнёрку[/url]

    (помимо этого имеются множество лендингов, большая конверсия и минимум полей для заполнения при регистрации на сервисе)

    Компания предоставляет шикарный сервис для клиентов среди себе подобных, чем реально и выделяется. Более того, у них имеется множество других фишек и нужных инструментов для клиента, которые помогают ему иметь заработок. Компании есть чем привлечь клиента. Но на этом пристальное внимание заострять не будем, потому как компания нам с вами интересна в первую очередь благодаря их партнерской программе. Их партнерская программа позволяет получать до 60% от прибыльности брокера систематично с каждого клиента до тех пор, пока он осуществляет торговлю через компанию. Организовав приток посетителей можно без усилий собирать плоды.

    Как искать клиентов? Этот вопрос больше актуален для обычных людей, не имеющих своих веб-сайтов или разрекламированных блогов. Можно начинать с простого:
    1. Вогнать в поисковой строке запрос «форекс форум»;
    2. Зарегистрироваться на 5-10 интернет-форумах (для старта);
    3. Выбрать любой холивар про финансовый рынок Форекс и сделать пост для привлечения внимания, как например, «Лично я получил бесплатно $900 для обучения торговле в организации ExpertOtpion!», и вставить личную партнерскую ссылку.
    И всё. Людям станет любопытно, пройдут по ссылке, и некоторые станут клиентами. Несомненно, просто разместить единовластно пост мало, нужно еще и создавать активность, участвуя в обсуждении и возбуждая внимание к компании. В каждом из обсуждения нужно в процессе аргументирования личного мнения вставлять ссылки. Потратив немного усилий, тема заживет своей жизнью и уже другие люди будут цитировать партнерскую ссылку, распространяя ее за вас. Рентабельность от такой деятельности говорит сама за себя:
    [url=http://bit.ly/2uPwBMI#50F5wDEnXs]
    [img]http://bit.ly/2uPrbkT#bQ27dMRv7s[/img]
    [/url]
    Партнёрская программа имеет различный комплект инструментов для размещения ссылок:
    • Виджеты;
    • Баннеры;
    • Попапы;
    и др.
    Кроме того для вебмастеров бесплатно предоставляются оригинальный контент для расположения на собственных web-ресурсах: обзоры, все статьи, тактики и стратегии, советы и прочпрочееее. Все это сильно оптимизирует работу и снижает прилагаемые старания для извлечения дохода. А полученный доход можно вывести любым методом на выбор:
    • Wire Transfer (Банковский Перевод);
    • ecoin.cc;
    • Yandex Money;
    • Skrill;
    • UnionPay;
    • FasaPay ;
    • ePayments.

    Довольно бесхитростный способ делать деньги, не так ли? Партнерство с ExpertOption даёт возможность несколько раз в месяц получать «небольшой» заработок в минимум несколько сотен $.

    Если же потратить больше усилий или же если вы программист, то размеры дохода уже будут иметь более высокий порядок.

    Широкий набор инструментов статистики даст возможность вам отслеживать источники получения прибыли и продуктивно управлять размещением ссылок.
    Интернациональная компания ExpertOption имеет очень большую известность по всему миру, большинство клиентов после ведении торговли на демо открывают настоящий счет и, как минимум, половина из них делает повторный вклад. Благодаря этому, партнерские 50-60% от дохода компании представляют собой впечатляющую сумму даже для вебмастеров. Все что нужно сделать, чтобы стать партнером, это пройти регистрацию в программе в один клик, разбросать ссылку и получать заработок. Все имеющиеся вопросы и трудности помогут разрешить специалисты службы поддержки.

  18. Today, I went to the beachfront with my children. I found a sea shell and
    gave it to my 4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her ear and screamed.
    There was a hermit crab inside and it pinched her
    ear. She never wants to go back! LoL I know this is completely
    off topic but I had to tell someone!

  19. Hey there, I think your website might be having browser compatibility issues.
    When I look at your website in Ie, it looks fine but when opening
    in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads
    up! Other then that, very good blog!

  20. [url=http://rrr.regiongsm.ru/33]
    [img]http://rrr.regiongsm.ru/32 [/img]
    [/url]
    Благоустройство и асфальтрование в Краснодаре и г.Гулькевичи. Решение любого вопроса по асфальтированию в Краснодарском крае. Под ключ

    Подробнее… Благоустройство-Краснодар.РФ … 8 (861) 24-123-45
    ___________________________
    снип iii-10-75 благоустройство территорий действует
    компания благоустройство г. владимир
    благоустройство владивостока
    ооо благоустройство запсиба сайт
    благоустройство участка детского дома

  21. wh0cd427128 [url=http://genericadvair.us.org/]Generic Advair[/url] [url=http://genericnexium.us.org/]generic nexium[/url] [url=http://metformin500mgtablets.us.org/]metformin 500mg tablets[/url]

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*