Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP代码在独立于Apache的服务器上?_Php_Apache_Load Balancing - Fatal编程技术网

PHP代码在独立于Apache的服务器上?

PHP代码在独立于Apache的服务器上?,php,apache,load-balancing,Php,Apache,Load Balancing,这是我从未见过的事情,我也没有参与我的研究,但我的老板对这个想法很感兴趣。我们正在研究一些负载平衡选项,并想知道是否有可能在多台服务器上安装apache和php,由负载平衡器管理,但将所有实际的php代码放在一台服务器上,而各种apache服务器指向一个中心代码库?例如,NFS装载当然是可能的,但我不推荐。负载平衡的许多优点都失去了,并且重新引入了单点故障。同步代码时,rsync和cronjob可以很好地处理自己,或者可以在部署时手动执行rsync 您想要这个中央代码库的原因是什么?我大约99%

这是我从未见过的事情,我也没有参与我的研究,但我的老板对这个想法很感兴趣。我们正在研究一些负载平衡选项,并想知道是否有可能在多台服务器上安装apache和php,由负载平衡器管理,但将所有实际的php代码放在一台服务器上,而各种apache服务器指向一个中心代码库?

例如,NFS装载当然是可能的,但我不推荐。负载平衡的许多优点都失去了,并且重新引入了单点故障。同步代码时,rsync和cronjob可以很好地处理自己,或者可以在部署时手动执行rsync


您想要这个中央代码库的原因是什么?我大约99%确信有一个比单一服务器发布代码更好的解决方案。

我相信这是可能的。为了补充Wrikken的答案,我可以想象NFS可能是一个不错的选择。然而,也有一些缺点和注意事项。首先,当Apache尝试访问一个已经消失的NFS共享上的文件时(连接断开、主机失败等)非常糟糕的事情发生了。Apache将锁定,并继续尝试检索该文件。无论出于何种原因,试图访问共享的进程不会消亡,因此有必要重新启动服务器


如果您最终这样做了,我建议您使用操作码缓存,例如。APC将在本地缓存预处理的php,并消除到存储的往返。只要准备好在更新应用程序时清除操作码缓存/

PHP必须运行在充当web处理器的环境下,Apache是最流行的。我已经完成了跨服务器的NFS装载,没有问题。如果NFS关闭,则可能是网络关闭。但是,跨服务器进行rsync复制文件并不需要很长时间,这确实是一个更好的主意

我不确定你的内容是什么样的,但是你可以分离静态文件,比如javascript、css和图像,这样它们就在自己的服务器上了。lighttpd是一个很好的、轻量级的web服务器,适用于类似的事情。然后,您将得到一个“专用”php服务器。此设置甚至不需要负载平衡器


请记住,PHP将会话存储在本地文件系统上。因此,如果使用会话,则需要确保用户始终返回到同一服务器。否则,您需要在memcache中执行存储会话之类的操作。

甚至需要从版本控制系统进行签出。NFS当然不是网络文件系统考虑的唯一选择。在我的经验中,APC是一个很好的缓存,但是可以检查文件的模式,因此在更新文件时不需要清理,如果文件不存在,则同样失败。或者我错过了一些APC设置?当然错过了,APC.stat,默认设置为1,不包含在默认的APC.ini文件中。如果设置为0,APC将不检查php文件的更新日期,并保留预处理版本,直到清除操作码缓存。顺便说一句,设置为0时的性能提升非常巨大。