首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP和mySQL进行异步事务处理

问使用PHP和mySQL进行异步事务处理
EN

Stack Overflow用户
提问于 2011-04-09 06:01:18
回答 5查看 1.8K关注 0票数 1

当某个动作发生在网站上(用PHP和MySQL构建)时,我希望在网站上发生一些异步的事情。

例如,当用户回答一个问题,上传文档时,我希望后台发生一些异步的事情,比如:1.更新用户的分数2.在Facebook墙上发布一条消息3.跟踪用户的操作。

哪种PHP,JavaScript和MySQL技术是实现这一目标的最佳选择?请帮帮忙。

我想要一些MySQL触发的东西,但又想异步发生。

EN

回答 5

Stack Overflow用户

发布于 2011-04-09 06:06:10

我能想到的唯一两个选项是消息队列和异步ajax。

第一种方法是将作业放入数据库中,然后一个预定的php程序将遍历数据库中的每个作业并运行它们。

第二个就是使用ajax调用php程序。

对于第一个选项,请看下面这样的内容:http://alanstorm.com/simple_php_job_queue

第二部分介绍jquery及其ajax选项:http://api.jquery.com/jQuery.ajax/

票数 2
EN

Stack Overflow用户

发布于 2011-04-09 06:20:35

最佳选择是使用exec调用三个单独的PHP脚本,并将输出传递给null,如下所示。

exec("/usr/bin/php somescript.php >> some_log_file.log 2>&1 &");

对三个函数的三个脚本执行相同的exec将会同时/异步地执行这三件事。这就是你想要的。

如果您将作业添加到作业队列中,然后让cron清除该队列,那么您实际上并不是在异步执行该操作。你仍然在以同步阻塞的方式一个接一个地做事情--尽管用户不会等待这些事情发生。如果您的站点具有高流量,则清除队列中也可能存在延迟,使用exec时,您不会得到相同的延迟。因为脚本将立即并同时执行于初始请求。

旁注:这就是为什么Node.js变得如此流行,它是建立在JavaScript之上的,它就是为这种开发方法而设计的。异步和事件驱动。

票数 2
EN

Stack Overflow用户

发布于 2014-04-18 13:49:14

使用swoole扩展。https://github.com/matyhtf/swoole

asyc mysql示例:

代码语言:javascript
复制
$db = new mysqli;
$db->connect('127.0.0.1', 'root', 'root', 'test');
$db->query("show tables", MYSQLI_ASYNC);
swoole_event_add(swoole_get_mysqli_sock($db), function($__db_sock) {
    global $db;
    $res = $db->reap_async_query();
    var_dump($res->fetch_all(MYSQLI_ASSOC));
    exit;
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5601230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档