我正在开发一个phpwebsocket应用程序。我必须将phpwebsocket的实例存储在我的应用程序中的任何地方。我找到了一个解决方案,那就是使用APC。但它不起作用。问题是,如果我在php控制台上运行的脚本php中使用apc_store('foo','bar')访问一个文件,它将无法工作。如果我做一个http请求(使用浏览器..)它实际上可以工作,但我必须从php控制台运行phpwebsocket。
在php.ini中:
[APC]
extension=php_apc.dll
apc.enabled = 1
apc.enable_cli = 1
apc.shm_segments = 1
apc.shm_size = 64M
apc.max_file_size = 10M
apc.stat = 1谢谢。
发布于 2012-05-03 09:35:32
APC在其进程空间内收集和存储缓存。由于控制台应用程序每次都会启动一个新进程,因此APC缓存启动时是干净的,因此不会带来性能提升。在apache mod的情况下,进程空间是apache web服务器本身,它保持活动状态。
1)在控制台上执行wget URL而不是独立的控制台php脚本如何?如果需要输出,可以使用wget -O - URL。APC将工作得很好。这里的限制是脚本不能获得任何物理文件访问。
2)您可以在控制台php控制台脚本中执行file_get_contents(URL)并转储内容。这样,您就可以从控制台调用它,甚至具有共享APC缓存的优势。您也可以在这里获得物理文件访问,但有一个问题。默认情况下,由于严重的安全原因,URL抓取作为文件是关闭的。您可能需要在php.ini中打开它。在生产网络上使用之前,请仔细验证您的案例。
http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen
发布于 2012-05-03 02:32:28
php-cli不与php-cgi或php-fpm共享APC缓存。事实上,我甚至不确定它是否与自己共享APC缓存!
此外,您不能将流或套接字等资源/实例存储在仅限APC的序列化对象中。
我将使用http://memcached.org/缓存数据,因为当您添加更多服务器时,它们也将能够访问相同的缓存。APC/XCache只能在单个服务器上运行。
https://stackoverflow.com/questions/10419546
复制相似问题