互联网有很多讨论,apc_cache_clear()在CLI中调用不会清除"web"PHP进程中的操作码缓存,无论它们是在Apache内部运行还是由FPM运行(请参阅如何清除APC缓存条目?).作为建议的解决方案,可以创建一个简单的PHP页面来调用apc_cache_clear(),并从CLI调用它.Symfony的ApcBundle就是这么做的.
如果apc_cache_clear()CLI不从Apache/FPM清空缓存,那么它是否在FPM工作者之间?如果我通过HTTP调用/clear_apc_cache.php,它只由一个FPM工作进程运行.那么,APC操作码缓存是否真正在池和工作人员之间共享 - 更具体:它是否自动从所有工作人员中清除?
我正在编写一个wordpress插件,其中CSS是以dinamically方式编译的,因此我已经实现了各种策略来缓存它.截至目前,缓存的首选是APC,如果安装的话.
这是我正在检查它
$is_apc_installed = function_exists( 'apc_store' )
&& function_exists( 'apc_fetch' )
&& ini_get( 'apc.enabled' );
$sapi_type = php_sapi_name();
if (substr($sapi_type, 0, 3) === 'cgi') {
$is_apc_installed = false;
}
Run Code Online (Sandbox Code Playgroud)
但在某些安装中我仍然得到apc_fetch()总是返回false.我还应该检查以确保APC正常工作?
我见过ubuntu的这个教程. http://thereluctantdeveloper.com/2015/12/quick-and-dirty-php-70-set-up-on-ubuntu-1404-with-apcu
一步之后我不清楚(git clone).我需要apcu扩展我的应用程序才能更快地执行.请指导在debian上安装php 7的apcu扩展.
我目前正在将memcached实现到我的服务中,但不断出现的建议是我还应该实现APC来缓存实际代码.
我已经浏览了一些教程,以及PHP文档,但我的主要问题是,如何大规模实现它?PHP文档讨论了存储变量,但不是那么详细.
请原谅我在这个领域没有受过教育,但我想知道实际网站在哪里实施.我是否真的会缓存一切或仅缓存经常使用的部分,例如函数?
谢谢!
我读过有关APC的信息,它可以加速多个php文件站点.所以我在PHP中有这个特殊的项目有很多文件,我发现require_once和解析只有类定义(不执行它们)需要花费大部分时间.
所以我在我的CentOS 5服务器上安装了APC.我将apc.php移动到我的网络服务器并显示
Hits: 1 (50.0%)
Misses: 1 (50.0%)
Cached Files 1 (281.1 KBytes)
Run Code Online (Sandbox Code Playgroud)
我可以去网站和更改子页面,等等,apc.php仍然只显示一个缓存文件?
在phpinfo()中它表明:
启用APC支持
我不知道该怎么办.APC是否正常工作(如phpinfo()sais)或不是吗?浏览网站上的某些页面后,只有一个缓存文件不多.
还有更多如何诊断错误并确保APC有效?我已经浏览过了
apc.mmap_file_mask /tmp/apc.QnLqNf /tmp/apc.QnLqNf
目录/ tmp,但我没有apc的任何文件,就像在phpinfo中所说的那样.
请帮我检查APC是否正常工作,如果没有,可能会出现问题.
会打电话
$ httpd graceful
Run Code Online (Sandbox Code Playgroud)
清除APC缓存,或者我必须做一个全面的
$ httpd restart
Run Code Online (Sandbox Code Playgroud)
去做吧?(请记住,我知道有更好的方法可以做到这一点,比如以编程方式调用apc_clear_cache()).
我尝试在OS X Lion(sudo pecl install apc)上安装带有pecl的APC,它抱怨缺少pcre.h文件:
In file included from /private/tmp/pear/temp/APC/apc.c:44:
/usr/include/php/ext/pcre/php_pcre.h:29:10: fatal error: 'pcre.h' file not found
#include "pcre.h"
Run Code Online (Sandbox Code Playgroud)
所以我使用MacPorts来安装pcre包(sudo port install pcre),但它仍然抱怨.我怎样才能解决这个问题?
我正在尝试使用Codeigniter和APC制作进度条.
这是我的表格:
<form method="post" action="" id="upload_file" enctype="multipart/form-data" target="result_frame">
<input type="hidden" value="<?php echo uniqid(); ?>" id="progress_key" name="APC_UPLOAD_PROGRESS" />
<p><label for="userfile">Séléctionnez un fichier</label><br />
<input type="file" name="userfile" id="userfile" size="20" />
<button class="btn btn-primary" type="submit" name="submit" id="submit" value="Submit"><span class="icon-upload"></span> Valider</button></p>
Run Code Online (Sandbox Code Playgroud)
当用户点击提交按钮时,它会触发上传过程.这是我的"检查进度"功能:
function checkProgress() {
$.ajax({
type: "POST",
url: "/fbe_upload/index.php/fbeupload/upload_progress",
async: true,
dataType: "json",
data: {
session_unid: $('#progress_key').val()
},
//Success
success: function(data) {
//Progress
liveProgress = data.progress;
//Progress bar
$('#progressBar-' + idRow).attr("class", "progress progress-striped active");
$('#progressBar-' + idRow + " div.bar").css("width", parseInt(liveProgress) + "%"); …Run Code Online (Sandbox Code Playgroud) 我们随机得到一些非常奇怪的错误日志.即使使用相同的参数/动作/等,它们也不会发生在每个页面上,并且它们似乎不可重复,每个页面的崩溃位置和上下文都不同.但几乎所有都有错误的__PHP_Incomplete_Class_Name作为原因.
一个这样的错误是:
main():脚本尝试执行方法或访问不完整对象的属性.请确保在调用unserialize()之前加载了您正在尝试操作的对象的类定义"LoginLogging",或者提供__autoload()函数来加载类定义
问题是,没有"LoginLogging"类.当它被保存到会话中时,它所引用的对象是ScormElement类型.转储变量给出:
__PHP_Incomplete_Class::__set_state(array(
'__PHP_Incomplete_Class_Name' => 'LoginLogging',
'intUserId' => '64576',
'__intUserId' => '64576',
'intScormId' => '665',
'__intScormId' => '665',
'intScoId' => '9255',
'__intScoId' => '9255',
'strElement' => 'cmi.core.lesson_location',
'__strElement' => 'cmi.core.lesson_location',
'strValue' => '1',
'dttTimeModified' => QDateTime::__set_state(array(
'blnDateNull' => false,
'blnTimeNull' => false,
'strSerializedData' => '2011-08-31T08:05:22-0600',
'date' => '2011-08-31 08:05:22',
'timezone_type' => 1,
'timezone' => '-06:00',
)),
'__strVirtualAttributeArray' => array (),
'__blnRestored' => true,
'objUser' => NULL,
'objScorm' => NULL,
)
Run Code Online (Sandbox Code Playgroud)
正确保留所有属性,并匹配ScormElement的类定义.但是班级名称是错误的.这里是没有名为LoginLogging类.
造成这种情况的原因是什么?我们如何修复它?
编辑:这只是一个例子.其他错误在结构上非常相似,但会影响其他类类型,并且具有不同的不完整名称.但是,所有不完整的名称都具有正确类名的相同字符串 …
apc ×10
php ×8
apache ×1
caching ×1
centos ×1
codeigniter ×1
debian ×1
javascript ×1
opcode-cache ×1
osx-lion ×1
pecl ×1
php-7 ×1
progress-bar ×1
session ×1
upload ×1