标签: apc

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

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

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

php linux caching apc command-line-interface

11
推荐指数
1
解决办法
4208
查看次数

加载VBA时以编程方式重建.exd文件

将Microsoft Office 2007更新到Office 2010后,我们软件中嵌入的某些自定义VBA脚本无法编译,并显示以下错误消息:

对象库无效或包含对无法找到的对象定义的引用.

据我所知,此错误是Microsoft的安全更新(Microsoft安全通报960715)的结果.将ActiveX控件添加到VBA脚本时,有关控件的信息存储在本地硬盘驱动器(.exd-files)上的缓存文件中.安全更新修改了其中一些控件,但.exd文件未自动更新.当VBA脚本尝试加载存储在缓存文件中的旧版本控件时,会发生错误.必须从硬盘驱动器中删除这些缓存文件才能成功加载控件(这将自动创建新的,更新的.exd文件).

我想要做的是以编程方式(使用Visual C++)删除我们的软件加载时过时的.exd文件.使用CApcProject::ApcProject.Open我打开VBA项目时,设置以下标志:axProjectThrowAwayCompiledState.

TestHR(ApcProject.Open(pHost, (MSAPC::AxProjectFlag) (MSAPC::axProjectNormal | MSAPC::axProjectThrowAwayCompiledState)));
Run Code Online (Sandbox Code Playgroud)

根据文档,此标志应该导致重新编译VBA项目以及要删除和重建的临时文件.我还试图更新主机应用程序类型库的校验和,它应具有相同的效果.然而,这些修复工具似乎都没有完成这项任务,而且我的想法已经不多了.

vba apc visual-c++ office-2010

11
推荐指数
1
解决办法
2217
查看次数

如何在mac osx mamp上安装apc for php?

我正在运行一个带有mamp和mamp pro的mac.如何检查是否启用了APC,如果未启用或未安装APC如何安装?

我试图让APC上传加载程序在网上找到工作,当我上传时它会被困在NAN%上.

这是一个链接:http://www.haughin.com/2007/10/23/php-upload-progress-with-php-52-apc/

php mamp apc

11
推荐指数
3
解决办法
2万
查看次数

为什么APC会为用户缓存增加"缓存完全计数",即使它有足够的可用内存?

我已经玩了很长一段时间,但是我有点不知所措.我在使用PHP 5.2.5的CentOs 5上使用APC 3.1.3p1.APC充当操作码缓存和用户缓存.大多数情况下,此服务器使用CacheRouter模块运行Drupal 6站点以支持APC缓存.我正在运行APC 3.0.19一段时间,但它导致Apache偶尔锁定(在该版本的APC中记录的错误),这就是我在3.1.3p1上的原因.

我已经将APC配置为具有512 MB内存(mmap).

症状有点间歇性但从空缓存开始这通常是我看到的:

  • 用户缓存填充速度相当慢.尽管初始插入速率大约为20,000次插入/秒,但用户缓存只会报告几百个,然后是几千个条目,并且增长速度非常慢.我可以将此归因于write_locking正在进行,但只是想提及它,以防它在解决手头的问题时非常重要.几个小时后,它达到约30,000个条目的平衡.

  • 碎片设置在早期并且快速增长.大约10个小时左右,我通常会100%碎片化.

  • 整体(操作码+用户)缓存使用稳定在240MB左右.它实际上永远不会超过这个水平.大约一天后,我将开始看到用户缓存高速缓存满计数(UCCFC)递增.

在撰写本文时,尽管APC报告280MB免费,我的UCCFC仍在62358并且还在增长.我有一个7200的user_ttl,但我也玩过它设置为0或其他数量,它对问题几乎没有影响.

我怀疑这个问题与碎片有关.现在我的服务器正在报告"碎片:100.00%(24740片段中280.0 MBy中280.0 MB)"和280 MB正好恰好是APC报告的可用空间量; 我想,这是个巧合.不幸的是,我在文档或其他地方发现了很少的信息来表明APC世界中"碎片化"真正意味着什么,而且似乎几乎没有任何东西可以避免它.

任何人都能解释这个问题吗?

php caching drupal apc

11
推荐指数
1
解决办法
3985
查看次数

使用dumpfiles在CLI模式下使用PHP APC缓存

我最近开始在我们的服务器上使用APC缓存.我们产品最重要的部分之一是CLI(Cron /预定)流程,其性能至关重要.通常,批处理工作包括并行运行一些16-32个进程大约一个小时(它们每隔几分钟"重启").

默认情况下,在CLI中使用APC缓存是浪费时间,因为在各个调用之间不保留操作码缓存.但APC也包含apc_bin_dumpfile()apc_load_dumpfile()功能.

我认为这两个函数可能用于在CLI模式下使APC高效,方法是在批处理文件之外的某些时间编译,存储在单个转储文件中并使各个进程加载转储文件.

有没有人对这种情况有任何经验,或者你能说明为什么它会起作用或者不起作用?如果可以合理地获得任何重大收益,无论是在内存使用还是性能方面?潜伏在阴影中的陷阱是什么?

php cron apc command-line-interface

11
推荐指数
1
解决办法
4335
查看次数

PHP和万阵宝贝

想象一下,你有以下整数数组:

array(1, 2, 1, 0, 0, 1, 2, 4, 3, 2, [...] );
Run Code Online (Sandbox Code Playgroud)

整数最多可达一百万条; 它们不是硬编码而是预先生成并存储在JSON格式的文件中(大小约为2MB).这些整数的顺序很重要,我不能每次都随机生成它,因为它应该是一致的,并且在相同的索引处始终具有相同的值.

如果这个文件之后在PHP中被回读(例如使用file_get_contents+ json_decode),则需要700到900毫秒来恢复数组 - "好的"我想,"它可能是合理的,因为json_decode必须解析大约200万个字符,让我们缓存它" .APC将其缓存在大约68MB的条目中,可能正常,zval很大.然而从APC取回这个阵列也需要一些好的600毫秒,这在我眼中仍然太多了.

编辑:APC确实序列化/反序列化以存储和检索具有一百万个项目数组的内容是一个漫长而繁重的过程.

所以问题:

  • 如果我打算在PHP中加载一百万条数组,无论是数据存储还是方法,我都应该期待这种延迟吗?据我所知,APC存储zval本身,所以理论上从APC中检索它应该尽可能快(没有解析,没有转换,没有磁盘访问)

  • 为什么APC对于看似简单的事情这么慢?

  • 有没有有效的方法使用PHP在内存中完全加载一百万个条目数组?假设RAM使用不是问题.

  • 如果我只根据索引访问这个数组的片段(例如将块从索引15加载到索引76)并且实际上从未将整个数组放在内存中(是的,我知道这是理智的做法,但是我想知道所有方面),整个阵列最有效的数据存储系统是什么?显然不是RDBM; 我在想redis,但我很乐意听到其他想法.

php apc large-data

11
推荐指数
1
解决办法
3699
查看次数

PHP-FPM - 读取响应头时上游过早关闭连接

已经看到了同样的问题 - 上游过早关闭连接,同时从上游读取响应头,客户端 但是正如Jhilke Dai所说,它根本没有解决,我同意.在nginx + phpFPM安装上得到了同样的确切错误.当前软件版本:FreeBSd9.1上的nginx 1.2.8 php 5.4.13(cli).实际上有点孤立这个错误,并确保它在尝试通过phpMyadmin导入大于3 mbs到mysql的大文件时发生.当达到30秒限制时,还计算后端关闭连接.Nginx错误日志抛出这个

 [error] 49927#0: *196 upstream prematurely closed connection while reading response header from upstream, client: 7X.XX.X.6X, server: domain.com, request: "POST /php3/import.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php5-fpm.sock2:", host: "domain.com", referrer: "http://domain.com/phpmyadmin/db_import.php?db=testdb&server=1&token=9ee45779dd53c45b7300545dd3113fed"
Run Code Online (Sandbox Code Playgroud)

我的php.ini限制相应提高

upload_max_filesize = 200M
default_socket_timeout = 60
max_execution_time = 600
max_input_time = 600
Run Code Online (Sandbox Code Playgroud)

my.cnf相关限制

max_allowed_packet = 512M
Run Code Online (Sandbox Code Playgroud)

Fastcgi限制

location ~ \.php$ {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass unix:/tmp/php5-fpm.sock2;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;

fastcgi_intercept_errors on;
fastcgi_ignore_client_abort on;
fastcgi_connect_timeout 60s;
fastcgi_send_timeout …
Run Code Online (Sandbox Code Playgroud)

php apc nginx

11
推荐指数
1
解决办法
1万
查看次数

APCu和Symfony2

由于PHP 5.5打破了APC以支持他们自己的缓存,我试图让我的Symfony2项目与APCu一起运行,并且它不喜欢它:

$ php app/console cache:clear --env=prod --no-warmup
PHP Fatal error:  Call to undefined function Doctrine\Common\Cache\apc_fetch() in /home/maf/symfony/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php on line 40
Run Code Online (Sandbox Code Playgroud)

APCu的文档基本上不存在,Symfony2文档已经过时,仅为APC提供帮助.

是的,我很遗憾这些天使用PHP与所有兼容性分解^ H ^ Hdowngrades,但请帮助我让我的项目再次运行.我在哪里应用灯光带?

php apc symfony

11
推荐指数
1
解决办法
1万
查看次数

Symfony/PHP7 APC - > APCu

我有PHP7和APCu的问题.安装后我收到此错误:

Fatal error: Call to undefined function Doctrine\Common\Cache\apc_fetch()

APCu是100%启用的,我在它看到它phpinfo();并且当我尝试apcu_fetch()它工作.

如何在Symfony 2.8中使用APCu?

php apc symfony

11
推荐指数
2
解决办法
1万
查看次数

nginx php5-fpm上游超时(110:连接超时),同时连接到上游

我们有一个运行nginx php5-fpm apc setup的web服务器.但是,我们最近在页面呈现期间遇到了上游连接超时错误和减速.一个快速的php5-fpm重启修复了问题,但我们找不到原因.

我们有另一个web服务器在另一个子域下运行apache2,连接相同的数据库,执行完全相同的工作.但是减速仅发生在nginx-fpm服务器上.我认为php5-fpm或apc可能会导致问题.

日志告诉各种连接超时:

upstream timed out (110: Connection timed out) while connecting to upstream bla bla bla

php5-fpm日志没有显示任何内容.只是孩子开始和结束:

Apr 07 22:37:27.562177 [NOTICE] [pool www] child 29122 started
Apr 07 22:41:47.962883 [NOTICE] [pool www] child 28346 exited with code 0 after 2132.076556 seconds from start
Apr 07 22:41:47.963408 [NOTICE] [pool www] child 29172 started
Apr 07 22:43:57.235164 [NOTICE] [pool www] child 28372 exited with code 0 after 2129.135717 seconds from start
Run Code Online (Sandbox Code Playgroud)

发生错误时加载服务器并且加载avg只有2(2cpus 16cores)并且php5-fpm进程似乎工作正常.

nginx conf:

user www-data;
worker_processes …
Run Code Online (Sandbox Code Playgroud)

php tcp apc nginx

10
推荐指数
1
解决办法
3万
查看次数