Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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文件在部署后即使在清除xcache后也不会得到更新_Php_Apache_Capistrano_Symlink_Xcache - Fatal编程技术网

Php文件在部署后即使在清除xcache后也不会得到更新

Php文件在部署后即使在清除xcache后也不会得到更新,php,apache,capistrano,symlink,xcache,Php,Apache,Capistrano,Symlink,Xcache,面对这个奇怪的问题,如果我部署代码,甚至清除xcache,那么代码也会调用一些旧文件。这种行为是随机的。我检查了xcache,它每次都变得清晰,但仍有一些时候它工作正常,然后再次尝试访问旧文件,以及如何正常工作。当我们为js或css维护版本时,这个问题并不存在于js或css中,而是存在于php类和函数中 我一点也不知道为什么会发生这种情况。我也试过接触所有的文件,但同样的问题仍然存在,甚至更频繁。 我将LAMP环境与xcache一起使用,并通过capistrano部署版本。我已从其管理员处验证x

面对这个奇怪的问题,如果我部署代码,甚至清除xcache,那么代码也会调用一些旧文件。这种行为是随机的。我检查了xcache,它每次都变得清晰,但仍有一些时候它工作正常,然后再次尝试访问旧文件,以及如何正常工作。当我们为js或css维护版本时,这个问题并不存在于js或css中,而是存在于php类和函数中

我一点也不知道为什么会发生这种情况。我也试过接触所有的文件,但同样的问题仍然存在,甚至更频繁。 我将LAMP环境与xcache一起使用,并通过capistrano部署版本。我已从其管理员处验证xcache是否已清除。 尝试了不同版本的xcache,但没有帮助

可能情况如下,但我也没有解决方案: 如果我们有一个很长的请求处理,我们会在其间部署和符号链接更改,如果此请求包含另一个文件,则会同时包含旧文件和新文件,从而导致问题

请建议我可以进一步行动的地方

当您在使用文件时更改文件时,您肯定会遇到问题

在切换符号链接之前,需要完全停止应用程序

在Capistrano社区,这被称为“维护模式”。你可以在谷歌上找到很多关于实现这个概念的信息

基本上,您将应用程序设置为“维护模式”,这将导致它在不到达PHP的情况下拒绝(web)请求,并停止任何长时间运行的进程(cron、daemaon等)。如何实现这一点在很大程度上取决于应用程序的体系结构


当应用程序完全空闲时,可以安全地切换符号链接,然后清除缓存,然后将其重新启动。

是否尝试使用其他类型的FTP服务上载文件?是否尝试重新启动Web服务器?重新启动Web服务器解决了问题,但无法在每次部署时重新启动服务器。是否将PHP作为模块运行?或者你是在一些CGI发行版上,比如mod_fcgi或mod_ruid2/suPHP等?可能xcache共享内存部分仅在一个cgi php linux进程中更新,并且由于某些原因,您的其他进程认为不需要更新?是否发布操作系统版本,以及是否在诸如vbox之类的vm上运行它?我在脚本中使用xcache\u clear\u cache(),该脚本是从CLI和cURL执行的。正如我在问题中提到的,以下案例是导致问题的原因:如果我们有一个很长的请求处理过程,我们会在其间部署和符号链接更改,如果此请求包含另一个文件,那么旧文件和新文件都会被包含在内,从而导致问题。因为您已经在使用CLI和web(cURL),我之前的回答没有任何意义。我重写它是为了解决你在评论中强调的真正问题。