Php APC正在破坏输出
我最近将web服务器切换到Centos 6.3,使用apache 2.2.15、PHP 5.4.11和APC 3.1.14 我开始时不时地收到客户的投诉,说某个页面不工作,或者出现奇怪的错误。我看到受影响的页面在输出中的任意位置都有问号和其他奇怪的符号,即使源代码没有问题。当我在源文件中更改一个字母时,页面开始正常工作 我怀疑APC,但我找不到任何线索何时以及为什么会发生这种情况 我使用mercurial来推动生产变更,但多年来我一直使用这种方法,没有任何问题。也许配置中的某些内容现在是新的,但遗憾的是我没有保留我的旧配置 下面是上次腐败的截图 编辑:以下是我在源代码中更改单个字符并保存后的响应,然后撤消文件(如果我只是重新启动web服务器或清除APC操作码缓存,也是如此): 注意行号不匹配,但它是100%相同的请求,因此响应也应该相同。第一个屏幕截图中的第111行应该根本不存在。似乎它来自另一个源文件…我已更改为1 使用ctime进行验证将避免svn或rsync等程序引起的问题,方法是确保自上次统计后inode没有更改。APC通常只检查mtimePhp APC正在破坏输出,php,apc,output,corruption,Php,Apc,Output,Corruption,我最近将web服务器切换到Centos 6.3,使用apache 2.2.15、PHP 5.4.11和APC 3.1.14 我开始时不时地收到客户的投诉,说某个页面不工作,或者出现奇怪的错误。我看到受影响的页面在输出中的任意位置都有问号和其他奇怪的符号,即使源代码没有问题。当我在源文件中更改一个字母时,页面开始正常工作 我怀疑APC,但我找不到任何线索何时以及为什么会发生这种情况 我使用mercurial来推动生产变更,但多年来我一直使用这种方法,没有任何问题。也许配置中的某些内容现在是新的,但
我会密切关注这个问题,因为它每周发生一到两次,如果这个问题解决了,我会在这里发布。页面的字符集是什么?(元数据头和服务器头?)数据库的排序规则是什么(如果有)-所有内容都匹配吗?所有内容都是UTF-8。如果这是一个字符集问题,那不是一个永久性的问题吗。我想知道这是否是一个正常的情况,几乎是巧合,但APC出现了一个潜在的问题。当它被破坏时,它总是在同一个地方?(即,如果您刷新了该页面,它会是相同的吗?)如果您清除APC缓存,而不更改任何其他内容,它是否仍然损坏,如果是,它是否仍然在相同的位置?页面上的文本“TotalBytesReceived”是正常的,还是神奇地出现了?如果您刷新,有问题的输出在同一行中。它不受刷新的影响。TotalBytesReceived是源文件中的一个数组键,但它永远不会被打印或在任何地方回显…在我看来,问题已经解决了!