PHP 中的多线程:可能吗?
PHP 中是否可以使用多线程的问题一直是一个长期存在的问题,过去关于在操作系统上强制使用多个 PHP 实例的建议。然而,这种方法带来了内存利用率和进程终止的问题。
引入 pthreads
答案在于 pthreads 扩展,它为PHP 中的多线程。此扩展在 PHP 7.2 中可用,并且需要基于 CLI 的应用程序,因为 Web 服务器环境不支持多线程。
使用 pthreads
pthreads 扩展提供了这样的类作为 Thread、Workers 和 Threaded 对象来管理线程、并发执行任务和同步
简单示例
考虑以下代码片段:
class AsyncOperation extends Thread { public function run() { // Long-running operation } } $stack = array(); foreach (range("A", "D") as $i) { $stack[] = new AsyncOperation($i); } foreach ($stack as $t) { $t->start(); }
此代码创建多个线程并同时执行它们,输出时间戳和任务状态。
现实世界示例
PHP 中多线程的实际应用是发出异步 Web 请求:
class AsyncWebRequest extends Thread { public function run() { $this->data = file_get_contents($this->url); } } $g = new AsyncWebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10)); $g->start(); while ($g->isRunning()) { echo "."; usleep(100); } if ($g->join()) { printf("Request took %f seconds to finish receiving %d bytes\n", microtime(true) - $t, strlen($g->data)); }
此代码启动异步 Web 请求,在此过程中打印点,并记录时间收到回复。
结论
与通过 pthreads 扩展,PHP 提供了强大的多线程机制,允许开发人员并发执行任务并提高基于 CLI 的应用程序的性能。
以上是PHP 真的可以多线程吗? pthreads 解决方案解释的详细内容。更多信息请关注PHP中文网其他相关文章!