thinkphp6 实现php代码异步执行
在php中,执行异步任务是一种很常见的需求,如批量发邮箱,短信等等执行耗时任务时,需要程序异步执行,给用户带来好的体验。
在php异步执行代码就很尬尴,不像java 可以创建多线程,在php中也可以用pcntl_fork()实现创建子进程,来实现异步,但这样可能会产生很多僵尸进程。其他的方式借助框架实现,如优秀的swoole框架,本文介绍无需安装如何框架扩展,php自带的方式处理
下面直接上代码,我用的thinkphp6
在extend下创建一个util类,代码如下
<?php
namespace util;
class AsyncHook
{
private static $hook_list = array();
private static $hooked = false;
public static function hook($callback, $params = [])
{
self::$hook_list[] = array('callback' => $callback, 'params' => $params);
if (self::$hooked == false) {
self::$hooked = true;
register_shutdown_function(array(__CLASS__, '__run'));
}
}
public static function __run()
{
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
if (empty(self::$hook_list)) {
return;
}
foreach (self::$hook_list as $hook) {
$callback = $hook['callback'];
$params = $hook['params'];
call_user_func_array($callback, $params);
}
}
}
调用方式
$namespaceClass = "app\\api\\task\\Test";
$classObj = app($namespaceClass);
\util\AsyncHook:hook([$classObj,"index"],['name'=>1]);
$this->success("");
执行结果,会先$this->success()返回数据,后执行hook中的Test index方法。很简单。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
pharmacie en ligne sans ordonnance pharmacie en ligne france livraison belgique or acheter mГ©dicament en ligne sans ordonnance
https://redirect.camfrog.com/redirect/?url=http://pharmafst.com/ pharmacie en ligne fiable
Achat mГ©dicament en ligne fiable pharmacie en ligne avec ordonnance and pharmacie en ligne livraison europe pharmacie en ligne avec ordonnance
cialis sans ordonnance cialis generique or Achat Cialis en ligne fiable
http://calendar.allcapecod.com/calendar_frame.cfm?id=97471&site=https://tadalmed.com Tadalafil 20 mg prix en pharmacie
cialis generique cialis sans ordonnance and cialis sans ordonnance cialis generique
Cialis en ligne: Acheter Cialis 20 mg pas cher - Achat Cialis en ligne fiable tadalmed.shop
pharmacies en ligne certifiГ©es Pharmacie en ligne France pharmacie en ligne fiable pharmafst.shop
Pharmacie Internationale en ligne: Pharmacie en ligne France - pharmacie en ligne fiable pharmafst.com
Cialis sans ordonnance pas cher: cialis generique - Tadalafil 20 mg prix sans ordonnance tadalmed.shop
http://pharmafst.com/# pharmacie en ligne france pas cher
kamagra 100mg prix: kamagra en ligne - Achetez vos kamagra medicaments
kamagra livraison 24h Kamagra Commander maintenant or kamagra gel
https://images.google.co.ve/url?q=https://kamagraprix.shop Kamagra Oral Jelly pas cher
kamagra gel Kamagra Oral Jelly pas cher and Kamagra Oral Jelly pas cher Kamagra Commander maintenant
kamagra en ligne: Kamagra Oral Jelly pas cher - kamagra oral jelly
Tadalafil 20 mg prix sans ordonnance: Tadalafil 20 mg prix en pharmacie - cialis generique tadalmed.shop
pharmacie en ligne pharmacie en ligne fiable or pharmacie en ligne france pas cher
http://www.ra-aks.de/url?q=https://pharmafst.com п»їpharmacie en ligne france
Achat mГ©dicament en ligne fiable pharmacie en ligne avec ordonnance and Pharmacie Internationale en ligne trouver un mГ©dicament en pharmacie
pharmacie en ligne livraison europe: Medicaments en ligne livres en 24h - trouver un mГ©dicament en pharmacie pharmafst.com
acheter kamagra site fiable Kamagra pharmacie en ligne or kamagra oral jelly
https://navilleauction.auctionserver.net/view-auctions/catalog/id/81/lot/1537/?url=http://kamagraprix.com Kamagra Commander maintenant
kamagra oral jelly Kamagra Commander maintenant and acheter kamagra site fiable kamagra pas cher
pharmacie en ligne france livraison belgique: pharmacie en ligne pas cher - pharmacie en ligne france livraison belgique pharmafst.com
acheter kamagra site fiable Kamagra pharmacie en ligne or kamagra livraison 24h
https://www.redirect.am/?http://kamagraprix.shop/ Kamagra pharmacie en ligne
Kamagra pharmacie en ligne Kamagra Oral Jelly pas cher and Kamagra pharmacie en ligne Kamagra Commander maintenant
Cialis sans ordonnance 24h: Achat Cialis en ligne fiable - Cialis en ligne tadalmed.shop
Pharmacie en ligne livraison Europe Meilleure pharmacie en ligne pharmacie en ligne sans ordonnance pharmafst.shop
http://tadalmed.com/# Cialis sans ordonnance pas cher
kamagra oral jelly: kamagra pas cher - acheter kamagra site fiable
pharmacie en ligne livraison europe: Livraison rapide - Pharmacie Internationale en ligne pharmafst.com
http://kamagraprix.com/# kamagra en ligne
Acheter Kamagra site fiable
kamagra pas cher: Kamagra Oral Jelly pas cher - acheter kamagra site fiable
Приветствуем вас на нашем веб-сайте!
Здесь вы найдёте всё необходимое для успешного управления
своими финансами. Мы предлагаем
широкий спектр финансовых продуктов, которые помогут
вам достичь ваших целей и обеспечить стабильность в будущем.
В нашем ассортименте представлены различные виды банковских продуктов,
инвестиции, страхование, кредиты
и многое другое. Мы постоянно обновляем нашу
базу данных, чтобы вы всегда были в курсе последних тенденций и
инноваций на финансовом рынке.
Наши специалисты помогут вам выбрать наиболее подходящий продукт, учитывая ваши
индивидуальные потребности и предпочтения.
Мы предоставляем консультации и рекомендации, чтобы вы могли принять обоснованное решение и избежать возможных рисков.
Не упустите возможность воспользоваться нашими услугами и откройте для себя мир финансовых
возможностей! Заходите на наш сайт, ознакомьтесь
с каталогом продуктов и начните свой путь к финансовой
стабильности прямо сейчас!
дебетовая карта с функцией защиты от мошенничества