我如何选择线程安全和非线程安全的PHP?



我正在开发一个Laravel 9。x应用程序在Windows 10。我当前的PHP版本是PHP 8.1.5 (cli) (built: Apr 12 2022 17:38:57) (ZTS Visual C++ 2019 x64)。这是一个线程安全的还是非线程安全的版本?我怎么知道?什么时候我应该选择线程安全的版本而不是非线程安全的版本?

我试着在StackOverflow上研究这个问题,但我看到的问题/答案似乎都是十年前的事了——就像这样——我强烈怀疑,如果我今天问这个问题,我可能会得到不同的答案,仅仅是因为技术在这几年里发生了变化。这是一个合理的假设吗?(至少,我当前版本的PHP显然使用了较新的编译器vc++ 2019,而不是VC6或VC9。)

我还不知道我的生产环境是什么,甚至我正在开发的应用程序是否会进入生产环境,因为它只是一个我正在编写(重新)学习Laravel的应用程序。到时候我可能会把它投入生产,作为一个工作的Laravel应用程序的演示,但它是否会在托管服务或netflix或其他地方,我现在只是不知道。

只是给你一些背景,这个问题只出现,因为我试图学习如何通过我的Laravel源代码调试问题,这显然需要我添加XDebug到XAMPP。我找到的安装XDebug的说明指向这里,并建议我为我的PHP版本下载Windows二进制文件。没有8.1.5的二进制文件,所以我不知道8.1的二进制文件是否可以工作,或者我最好使用8.1线程安全或8.1非线程安全。如果先将PHP升级到8.2会更好,我仍然不知道线程安全还是非线程安全是更好的选择。

谁能在这些事情上给我点化一下吗?

这是线程安全的还是非线程安全的版本?我怎么知道?

您可以使用老式的phpinfo()函数并查找Thread Safety列。

如果您的PHP设置在PATH环境中,您甚至可以使用快速命令php -i | grep Thread通过CLI获得它

我什么时候应该选择线程安全的版本而不是非线程安全的版本?

根据PHP官方文档

如果您选择将PHP作为CGI二进制文件运行,那么您将不需要线程安全,因为在每个请求时都会调用二进制文件。对于多线程的web服务器,比如IIS5和IIS6,你应该使用线程版本的PHP。

我还不知道我的生产环境将是什么…

一般来说,TS和NTS代码执行没有区别。它更倾向于web服务器。

如果我没有弄错的话,默认情况下,XAMPP使用Apache Handler,所以它可能是一个线程安全的构建。是的,PHP8.1的Xdebug二进制文件将正常工作。

从技术上讲,NTS应该稍微快一点,因为它不需要考虑线程安全。

就我个人而言,我认为这无关紧要,除非你想花更多的时间来修补web服务器切换到FastCGI或PHP-FPM,因为你还在开发阶段,我认为坚持默认设置,专注于让它更有效率。

相关内容

  • 没有找到相关文章

最新更新