我正在使用框架 Drupal 7 和带有 mysql 的环境 Windows。我有一个问题,我想在 php 中调用异步调用,我必须更新数据库中的某些值,但我不想停止函数的执行。即使数据库处理正在进行,函数也应该完成并返回值。
我在考虑线程方法,其中一个线程正在更新数据库,其他线程将完成并返回函数。可以在 php 中使用吗?如果是,那怎么办??
另一种选择是 HTTP 并行请求和线程库模块:https ://www.drupal.org/project/httprl
我认为您想要的功能是 httprl_queue_background_callback() 然后是 httprl_send_request()。请参阅示例(API 文档不是很好)。
这是我编写的多线程 Drush 教程的链接,它可能会帮助您了解 Drupal 7 中的多线程示例:
http://deeson-online.co.uk/labs/multi-threading-part-1-how-make-drush-rush
到目前为止,有上千个关于 PHP 多线程的问题,它们都在 Drupal 上“工作”。PHP 并不真正支持多线程。我敢打赌,您需要使用此功能。
passthru("/usr/bin/php /path/to/script.php ".$argv_parameter." >> /path/to/log_file.log 2>&1 &");
这将使它保持在后台运行并将结果输出到您的日志中。
我建议使用 Symfony2 框架中的 Process 组件:http: //symfony.com/doc/master/components/process.html