最近几天我使用PHP线程(pthreads)与PHP 7.0.1(在配置中使用-enable-maintainer-zts),并且在使用Thread或Worker时一切正常。当我试图为一个工人创建一个继承自Stackable的类时,我得到了“致命的错误:Class' Stackable'未找到” 。
使用get_declared_classes()我意识到对于线程我只有Threaded,Volatile,Thread,Worker和Pool类。 我认为这是pthreads版本的问题(这是最新的3.1.15)但卸载并安装回3.0.0时发生了同样的错误。
PHP手册(英文版)也没有提到Stackable类,尽管让工作者工作是必不可少的。我在这里错过了什么?
答案 0 :(得分:3)
我会回答我自己的问题。似乎PHP手册尚未更新。您不需要Stackable来使Worker(甚至是Pool)工作。它可能只是一个Threaded对象。要通过pthreads了解PHP中线程的最新实现,请阅读https://github.com/krakjoe/pthreads以及那里的示例和测试。 Joe Watkins的工作非常令人钦佩,作为一名程序员,我觉得有必要感谢他。但更新PHP手册也很棒,甚至是那里的参考,它已经过时了。
答案 1 :(得分:2)
Stackable只是自2.0.0以来Threaded的别名。所以你应该更好地使用Threaded类。