为什么PHP开发人员无法根据线程范围提供setlocale函数

|| 我们有setlocale PHP中的功能。此功能有警告信息   语言环境信息是按进程而不是按线程维护的。如果您在多线程服务器API(例如IIS或Windows上的Apache)上运行PHP,尽管脚本本身从未调用过setlocale(),但是在脚本运行时可能会遇到语言环境设置的突然变化。发生这种情况的原因是其他脚本同时在同一进程的不同线程中运行,并使用setlocale()更改了整个进程的语言环境。 例如,针对具有miltithread设置的Windows的apache。我在PHP项目中找到了以下代码行:
# ifdef PHP_WIN32
_configthreadlocale(_ENABLE_PER_THREAD_LOCALE);
# endif
如果此代码有效,为什么我们必须注意setlocale函数的警告?     
已邀请:
您已经提供了答案:   语言环境信息是按进程而不是按线程维护的。 [...] 这不是PHP的问题,这只是语言环境设置的工作方式。更改它适用于整个运行过程。这是一个系统设置,不知道您的应用程序内部线程。 现在出现了,因为Windows通过系统调用处理语言环境和线程,所以它可以完成不可思议的任务:为每个线程应用语言环境设置。 这里是参考: http://msdn.microsoft.com/zh-CN/library/ms235302(v=vs.80).aspx 因此,如果您在为此专门准备的系统上运行,则无需关心。对于应用程序的可移植性,您仍应牢记这一点。 (尽管我相信Apache线程MPM并未得到广泛使用。)     

要回复问题请先登录注册