在CLI和Web上调用时,如何让PHP使用相同的APC缓存?

时间:2009-01-13 15:05:54

标签: php linux caching command-line-interface apc

我正在使用APC来缓存用户变量(使用apc_store / apc_fetch命令)。我还使用选项“apc.enable_cli = 1”为CLI启用了APC。但是,CLI的CLI版本似乎从Apache使用的版本访问不同的APC缓存。

是否可以将APC配置为对CLI和Web调用使用相同的缓存?

4 个答案:

答案 0 :(得分:11)

不可能..实现类似于使用像memcacheD这样的东西的唯一方法。或运行您在网络服务器上运行所需的内容。什么运行的CLI无法通过带有cronjob的Web脚本运行?

答案 1 :(得分:4)

你可以使用shm。这项技术可以访问Unix共享内存。你可以把一些变量放在shm中然后放在另一个scritp中,即使是在另一个语言中编程你也可以获得共享变量。

shm_put_var和shm_get_var。

它比APC慢,但它比memcached,redis等更快。

我希望它能帮到你,我很抱歉我的英语......

答案 2 :(得分:1)

将您的CLI称为CGI /path-to/cgi-sys/php5.cgi /home/name/crons/engine.php

答案 3 :(得分:0)

你需要一个用php编写的web服务器 - 只有分叉子进程才能共享APC缓存。如果你有一个php webserver,你可以在一个子进程中启动一个主cli,init apc,fork和加载/运行web服务器,然后在另一个子进程中运行你的php cli脚本。有点粗暴,呵呵。 fork和require(),我认为apc缓存不会在exec()

中存活