3分钟短文PHP多线程没用过,你可能错过

引言

别的语言都在一窝蜂地搞编译,搞虚拟机,搞多线程,提高效率。我们整天敲PHP代码,除了Nginx调用php-fpm拉取PHP文件的解析外,对于多线程有多少了解?

请问,PHP能不能使用多线程?如果能,怎么实现的?

本文就带你打开这个疑问。

学习时间

这个问题的答案是肯定的,PHP可以使用多线程。我们借助于pthreads实现:

该项目提供了与基于PosixThreads的PHP兼容的多线程。

有啥亮点没?下面这些全是:

一个易于使用,快速学习的面向对象的PHP7.2线程API执行所有预定义和用户声明的方法和函数,包括闭包。包括现成的同步无限的可能性...

需要一些扩展的基础的支持,PHP7.2及以上版本,ZTSEnabled(ThreadSafety),PosixThreadsImplementation。

还有一些注意事项:

pthreads是一个面向对象的API,它提供了PHP中多线程所需的所有工具。PHP应用程序可以创建,读取,写入,执行并与线程,辅助对象和线程对象同步。

警告:pthreads扩展名不能在Web服务器环境中使用。因此,PHP中的线程应仅保留给基于CLI的应用程序使用。

命令行应用脚本完全适用,这也与我们编写Bash,Python等等类似。下面举一个例子:

然后执行一次:

再执行一次:

实际运用

上面的代码是个示例性质的应用,仅仅是为了展示多线程运行。下面来一段业务代码。

该类模拟一个url请求。因为网络问题,有可能失败,或者不确定返回时间,所以适合并行。接着我们使用该类进行多网络请求并发。为了减轻系统负荷,使用微秒延时。

$t=microtime(true);$g=newAsyncWebRequest(sprintf(


转载请注明:http://www.aierlanlan.com/rzdk/2198.html

  • 上一篇文章:
  •   
  • 下一篇文章: