Chinaunix

标题: 求助,启用APC后的离奇问题. [打印本页]

作者: Try.Shieh    时间: 2010-01-21 14:18
标题: 求助,启用APC后的离奇问题.
启用APC前一切正常,启用后地方出现了
Fatal error: Call to undefined function xxx() in xxx 这样的错误.(xxx是不定的.)
当我到错误行 用 function_exists(xxx) 检查得时候 function 又离奇"出来"了.检查很久没得出答案,
结果把APC关了,一切又恢复正常了.这是什么原因呢.? 是我配置出了问题.? 还是什么地方冲突了??

下面是我的配置信息.

[apc]
extension=php_apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=512
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=On
apc.rfc1867_prefix=upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=300k
apc.max_file_size=1024M
upload_max_filesize=1024M
post_max_size=1024M



补充:
     那个 undefined function 是我自己定义的一个 function, 存放在一个独立的文件内. 使用 require_once 引入的. 用的是绝对路径.

再补充:
     require_once 引入后 function 离奇失踪了..
     
require_once('/home/www/test/func_xxx.php');
var_dump(function_exists('xxx'));#output:false


[ 本帖最后由 Try.Shieh 于 2010-1-21 16:39 编辑 ]
作者: bs    时间: 2010-01-21 14:18
如果 undefined function 为外部扩展函数
这可能是个APC与PHP结合的bug,可考虑更换php版本试试

PHP执行完后会根据扩展模块各自调用关闭,猜测是apc过早调用关闭从而使得扩展模块部分无法做关闭处理,
试试把APC扩展模块的加载放在最前面,这样可以使得它最后一个关闭。
作者: renxiao2003    时间: 2010-01-21 15:09
帮你顶一下。我没清楚。
作者: Try.Shieh    时间: 2010-01-21 16:31
标题: 回复 #2 bs 的帖子
那个 undefined function 是我自己定义的一个 function, 存放在一个独立的文件内. 使用 require_once 引入的. 用的是绝对路径.
作者: 四不象    时间: 2010-01-22 20:48
我不知道这个问题是如何引起的,我是来讲故事的,希望对你有帮助。

这是一个发生在美国通用汽车的客户与该公司客服部间的真实故事。

有一天美国通用汽车公司的庞帝雅克(Pontiac)部门收到一封客户抱怨信,上面是这样写的∶“这是我为了同一件事第二次写信给你,我不会怪你们为什么没有回信给我,因为我也觉得这样别人会认为我疯了,但这的确是一个事实。”

“我们家有一个传统的习惯,就是我们每天在吃完晚餐后,都会以冰淇淋来当我们的饭后甜点。由于冰淇淋的口味很多,所以我们家每天在饭后才投票决定要吃哪一种口味,等大家决定后我就会开车去买。”

“但自从最近我买了一部新的庞帝雅克后,在我去买冰淇淋的这段路程问题就发生了。”

“你知道吗?每当我买的冰淇淋是香草口味时,我从店里出来车子就发不动。但如果我买的是其它的口味,车子发动就顺得很。为什么这部庞帝雅克当我买了香草冰淇淋它就发不动,而我不管什么时候买其它口味的冰淇淋,它就一尾活龙?为什么?为什么?”

事实上庞帝雅克的总经理对这封信还真的心存怀疑,但他还是派了一位工程师去查看究竟。当工程师去找这位仁兄时,很惊讶的发现这封信是出之于一位事业成功、乐观、且受过高等教育的人。

工程师安排与这位仁兄的见面时间刚好是在用完晚餐的时间,两人于是一个箭步跃上车,往冰淇淋店开去。当他们买好香草冰淇淋回到车上后,车子果然发不动了。

这位工程师之后又依约来了三个晚上。

第一晚,巧克力冰淇淋,车子没事;第二晚,草莓冰淇淋,车子也没事;第三晚,香草冰淇淋,车子发不动。

这位思考有逻辑的工程师,到目前还是死不相信这位仁兄的车子对香草过敏。因此,他仍然不放弃继续安排相同的行程,希望能够将这个问题解决。工程师开始记下从开始到现在所发生的种种详细资料,如时间、车子使用油的种类、车子开出及开回的时间……,根据资料显示他有了一个结论,这位仁兄买香草冰淇淋所花的时间比其它口味的要少。

为什么呢?原因是出在这家冰淇淋店的内部设置的问题。因为,香草冰淇淋是所有冰淇淋口味中最畅销的一种,店家为了让顾客每次都能很快的取拿,将香草口味特别分开陈列在单独的冰柜,并将冰柜放置在店的前端;至于其它口味的则放置在距离收银台较远的后端。

现在,工程师所要知道的疑问是,为什么这部车会因为从熄火到重新激活的时间较短时就会发不动?原因很清楚,绝对不是因为香草冰淇淋的关系,工程师很快地由心中浮现出,答案应该是“蒸气锁”。因为当这位仁兄买其它口味时,由于时间较久,引擎有足够的时间散热,重新发动时就没有太大的问题。但是买香草口味时,由于花的时间较短,引擎太热以至于还无法让“蒸气锁”有足够的散热时间。

在这个故事中,购买香草冰淇淋有错吗?但购买香草冰淇淋确实和汽车故障存在着逻辑关系。问题的症结点在一个小小的“蒸气锁”上,这是一个很小的细节,而且这个细节被细心的工程师所发现。这里有一正一反两方面的教训,一方面,厂家在“蒸气锁”这个细节没有注意,导致了产品出现这种奇怪的故障;另一方面,庞帝雅克的工程师同样因为注重细节,认真分析,最后终于找出了故障的原因。
作者: renxiao2003    时间: 2010-01-22 22:42
这个问题还没有解决呢。
作者: Try.Shieh    时间: 2010-01-23 01:51
绝望了...一气之下换XCache了..哈.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2