假设此脚本需要0.99秒,这会阻止网站访问者在脚本执行时访问网站吗?他们会收到超时/内部服务器错误吗?
如果是这样,有没有办法使用某种多线程选项呢?
为了提供更多细节,我正在尝试创建一个有怪物的角色扮演游戏.
这些怪物存储在名为rpg_monsters的表中.怪物表有一个ID,目标,x和y字段,需要查看它们是否在彼此的范围内以攻击可能的敌人.
如果它们在彼此的范围内,则需要将其目标更新为该怪物ID.今天我仍然有很少的怪物,但是这个数字将来会增加,从而增加了剧本的执行时间.
据我所知,在正常情况下,您需要专门的服务器才能完成此类紧张工作.但是,我想看看在过载之前我可以推动PHP / MysqL多远.
先感谢您!
解决方法:
简答:不.
每次对PHP脚本的新调用都会创建一个新的PHP实例(通常是一个新进程,在某些情况下它只是在新线程下运行,但这不会影响您的问题),并且多个实例彼此独立运行.
作为套管点,尝试运行此脚本:
<?PHP
sleep(20);
?>
…并在运行时发送新请求/启动另一个实例.你会看到一个不会以任何方式影响另一个.
要添加关于问题的线程元素的更多信息:PHP本身不能是多线程的.如果你在最近的IIS中作为IIS模块运行它(我不记得确切的时候开始)PHP实例将在IIS进程的新线程下运行 – 但是你无法启动它PHP中的线程.在每个其他设置(AFAIK)中,每个新的PHP实例都会创建一个新进程.