数码资讯
在PHP中使用APC模块实现文件上传进度条的方法
介绍了利用APC模块实现文件上传进度条的PHP方法,供大家参考,具体分析如下: 对php5.2以前的版本不能使用APC模块,因为之前没有APC模块。如果我们想使用APC模块上传进度条,我们必须php5.2或后。 自5.2以来,APC已经加入了一个东东叫apc_upload_progress,解决了一
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
介绍了利用APC模块实现文件上传进度条的PHP方法,供大家参考,具体分析如下:
对php5.2以前的版本不能使用APC模块,因为之前没有APC模块。如果我们想使用APC模块上传进度条,我们必须php5.2或后。
自5.2以来,APC已经加入了一个东东叫apc_upload_progress,解决了一直以来困扰着大家的问题。它还缓存到内存的临时文件上传时的原始文件,并自动保存到硬盘的临时文件时达到设定值,有效地提高了内存的利用率。
其原理是给每个上传上传一个唯一的ID,当PHP脚本接收上传文件,解释器会自动检查$ _post数组的指定apc_upload_progress隐藏字段,它将成为缓存变量来存储有关信息上传,这样的状态信息可以通过上传ID访问文件上传脚本
APC是替代PHP缓存的缩写,它是PHP的免费开放优化代码缓存,用于提供免费、开放和健壮的体系结构来缓存和优化PHP的中间代码。
APC模块的参数配置,代码如下:
复制代码如下:名称默认多变的更新日志
1 php_ini_all apc.enabled
1 php_ini_system apc.shm_segments
30 php_ini_system apc.shm_size
0 php_ini_all apc.optimization
1000 php_ini_system apc.num_files_hint
0 php_ini_system apc.ttl
3600 php_ini_system apc.gc_ttl
在php_ini_system apc.cache_by_default
apc.filters php_ini_system
apc.mmap_file_mask php_ini_system
0 php_ini_system apc.slam_defense
2 php_ini_system apc.file_update_protection
apc.enable_cli 0 php_ini_system > APC 3.0.6
配置就绪后,程序立即启动。
xml代码如下所示:
复制代码代码如下所示:
视频标题:
视频描述:
视频标记(逗号分区)
< div
最重要的是apc_upload_progress隐藏域。通过它的脚本,您可以访问上传文件的状态,并添加一个显示上传状态的div。
下面是处理ajax的脚本,我使用jQuery框架,通过JSON传递消息。
Javascript代码如下所示:
复制代码代码如下:功能得到任务的进度(单){
var url =epadmin /过程;
getJSON(美元。
URL,
{ progress_key:单},
函数(JSON){
$(# progressinner)。Width(JSON。每+%);
$(# upstatus)。Html(文件大小:+ JSON。总+ 'kb+已上载:+ JSON。电流+ 'kb);
如果(json.per<100){
setTimeout(){()函数(
得到任务的进度(单);
},10);
其他{ }
$(# upstatus)。Html(完整的视频上传,处理数据,请稍后…);
}
}
)
}
功能startprogress(单){
$(# progressouter)。Css({显示:块});
setTimeout(){()函数(
得到任务的进度(单);
},100);
}
下面是读取和上传PHP代码的状态,至于上传文件的处理可以按照自己的习惯编写,代码如下:
将代码复制如下:上传文件操作函数,可以根据自己的需要编写。
upflvaction()函数
{
如果($ _server { } = = 'post 'request_method ' '){
为主题装饰(美元-> F ->滤波器(美元-> _request -> GETPOST(主体)));
$content =装饰(美元-> F ->滤波器(美元-> _request -> GETPOST('content')));
zend_loader::loadClass('custom_flvop);
FLV =新custom_flvop美元;
$ FLV -> uploadflv('upfile美元美元,主体、内容);
}
}
这是读/上传功能的状态。
upprocessaction()函数
{
如果(isset($ _get { 'progress_key ' })){
$状态= apc_fetch('upload_'。_get美元{ 'progress_key});
$ =数组(
每= > $状态{ } /当前的美元地位{综合}×100,
总= >圆(合状态{综合} / 1024),
当前= >圆(合状态{当前} / 1024),
);
require_once(禅 / JSON。PHP );
回声zend_json::编码($ JSON);
}
}
关于APC配置的一些细节:
apc.enabled布尔
apc.enabled可设置0禁用APC,这主要是有用的。当APC被编译成PHP静态时,没有其他方法可以禁用它。当编译DSO,可以在php.ini中的扩展行注释。
apc.shm_segments整数
分配给编译缓冲区的共享内存块的数量被分配。如果APC从共享内存,和你有apc.shm_size为系统允许的最大值,你可以尝试增加这个参数的值。
apc.shm_size整数
每个共享内存块的大小是基于MB。默认情况下,对于一些系统的共享内存块的大小的限制,包括大多数BSD变种系统,非常低。
apc.optimization整数
优化等级。设置为0禁用优化,使用越高的优化值越高。期待中等速度的改进。这是一个实验性的改进。
apc.num_files_hint整数
提示在Web服务器上包含和请求的不同源文件的数量。如果您不确定,请将其设置为0或省略;此设置主要用于具有数千个源文件的站点。
apc.ttl整数
当缓冲区中的另一个位置需要缓存条目时,我们需要考虑缓存区允许空闲缓存的秒数。将此参数设置为0意味着您的缓存可能充满了新项,并且不能缓存新条目。
apc.gc_ttl整数
那缓存项生活垃圾收集列表的秒数。此值提供了一个事件,执行缓存源文件时服务器进程是死的错误保护。如果源文件被修改,内存分配的缓存条目旧版本将不能恢复到设置的参数达到TTL值。设置为0是这个功能的禁止。
apc.cache_by_default布尔
默认的,但它可以被设置为关闭,使用与apc.filters开始用加号连接,和文件仅缓存只有当滤波器的匹配。
apc.filters字符串
一个逗号分割的POSIX扩展正则表达式的列表。如果任何模式匹配的源文件的名称,文件将不会被缓存。注意,用来匹配文件名的文件传递给包括 /要求的名字,而不是绝对路径。如果正则表达式的第一个字符是+,那么这个表达意味着任何匹配表达式的文件将被缓存。如果第一个字符是-那么任何匹配都不会被缓存-它是默认值,所以可以省略它。
apc.mmap_file_mask字符串
apc.slam_defense整数
在一个非常繁忙的服务器,无论你启动服务或修改文件,你会多进程来缓存相同的文件在同一时间。这个选项设置过程中跳过尝试缓存文件没有被缓存的百分比。或者你可以想象一下这是一个概率,分离过程跳过缓存。例如,建立apc.slam_defense 75意味着过程都有75%的概率不缓存不缓存文件。因此,更高的设置,更多的缓存可以减少碰撞的概率设为0禁用此功能。
apc.file_update_protection整数
当你修改一个文件在运行的服务器,你应该执行原子操作,写一个临时文件,然后重命名(MV)文件到其最终位置时完成。很多文本编辑器,CP,焦油,和其他一些类似的节目不都是这样做的。这意味着一个机会来访问(缓存)的文件,当文件仍然是写的apc.file_update_protection设置允许缓存标志新文件的延迟。默认值是2,这意味着该文件将不被缓存,如果该文件的时间距离的访问时间被发现是小于2秒。不幸的人访问该文件的用户将看到一半的怪现状,但至少这是没有的情况下,如果你是当然,你经常使用原子操作来更新你的文件,你可以通过设置这个参数到0关闭这个保护。如果你的系统充满IO操作并导致更新程序需要超过2秒,你可能需要增加这个值。
apc.enable-cli整数
主要用于测试和调试,为CLI版本PHP启动APC函数。一般来说,您不会期望为每个CLI请求创建、移植和放弃APC缓存,但是对于各种测试用例,打开APC非常容易。对于CLI版本。
希望本文能对大家的PHP程序设计有所帮助。
对php5.2以前的版本不能使用APC模块,因为之前没有APC模块。如果我们想使用APC模块上传进度条,我们必须php5.2或后。
自5.2以来,APC已经加入了一个东东叫apc_upload_progress,解决了一直以来困扰着大家的问题。它还缓存到内存的临时文件上传时的原始文件,并自动保存到硬盘的临时文件时达到设定值,有效地提高了内存的利用率。
其原理是给每个上传上传一个唯一的ID,当PHP脚本接收上传文件,解释器会自动检查$ _post数组的指定apc_upload_progress隐藏字段,它将成为缓存变量来存储有关信息上传,这样的状态信息可以通过上传ID访问文件上传脚本
APC是替代PHP缓存的缩写,它是PHP的免费开放优化代码缓存,用于提供免费、开放和健壮的体系结构来缓存和优化PHP的中间代码。
APC模块的参数配置,代码如下:
复制代码如下:名称默认多变的更新日志
1 php_ini_all apc.enabled
1 php_ini_system apc.shm_segments
30 php_ini_system apc.shm_size
0 php_ini_all apc.optimization
1000 php_ini_system apc.num_files_hint
0 php_ini_system apc.ttl
3600 php_ini_system apc.gc_ttl
在php_ini_system apc.cache_by_default
apc.filters php_ini_system
apc.mmap_file_mask php_ini_system
0 php_ini_system apc.slam_defense
2 php_ini_system apc.file_update_protection
apc.enable_cli 0 php_ini_system > APC 3.0.6
配置就绪后,程序立即启动。
xml代码如下所示:
复制代码代码如下所示:
视频标题:
视频描述:
视频标记(逗号分区)
< div
最重要的是apc_upload_progress隐藏域。通过它的脚本,您可以访问上传文件的状态,并添加一个显示上传状态的div。
下面是处理ajax的脚本,我使用jQuery框架,通过JSON传递消息。
Javascript代码如下所示:
复制代码代码如下:功能得到任务的进度(单){
var url =epadmin /过程;
getJSON(美元。
URL,
{ progress_key:单},
函数(JSON){
$(# progressinner)。Width(JSON。每+%);
$(# upstatus)。Html(文件大小:+ JSON。总+ 'kb+已上载:+ JSON。电流+ 'kb);
如果(json.per<100){
setTimeout(){()函数(
得到任务的进度(单);
},10);
其他{ }
$(# upstatus)。Html(完整的视频上传,处理数据,请稍后…);
}
}
)
}
功能startprogress(单){
$(# progressouter)。Css({显示:块});
setTimeout(){()函数(
得到任务的进度(单);
},100);
}
下面是读取和上传PHP代码的状态,至于上传文件的处理可以按照自己的习惯编写,代码如下:
将代码复制如下:上传文件操作函数,可以根据自己的需要编写。
upflvaction()函数
{
如果($ _server { } = = 'post 'request_method ' '){
为主题装饰(美元-> F ->滤波器(美元-> _request -> GETPOST(主体)));
$content =装饰(美元-> F ->滤波器(美元-> _request -> GETPOST('content')));
zend_loader::loadClass('custom_flvop);
FLV =新custom_flvop美元;
$ FLV -> uploadflv('upfile美元美元,主体、内容);
}
}
这是读/上传功能的状态。
upprocessaction()函数
{
如果(isset($ _get { 'progress_key ' })){
$状态= apc_fetch('upload_'。_get美元{ 'progress_key});
$ =数组(
每= > $状态{ } /当前的美元地位{综合}×100,
总= >圆(合状态{综合} / 1024),
当前= >圆(合状态{当前} / 1024),
);
require_once(禅 / JSON。PHP );
回声zend_json::编码($ JSON);
}
}
关于APC配置的一些细节:
apc.enabled布尔
apc.enabled可设置0禁用APC,这主要是有用的。当APC被编译成PHP静态时,没有其他方法可以禁用它。当编译DSO,可以在php.ini中的扩展行注释。
apc.shm_segments整数
分配给编译缓冲区的共享内存块的数量被分配。如果APC从共享内存,和你有apc.shm_size为系统允许的最大值,你可以尝试增加这个参数的值。
apc.shm_size整数
每个共享内存块的大小是基于MB。默认情况下,对于一些系统的共享内存块的大小的限制,包括大多数BSD变种系统,非常低。
apc.optimization整数
优化等级。设置为0禁用优化,使用越高的优化值越高。期待中等速度的改进。这是一个实验性的改进。
apc.num_files_hint整数
提示在Web服务器上包含和请求的不同源文件的数量。如果您不确定,请将其设置为0或省略;此设置主要用于具有数千个源文件的站点。
apc.ttl整数
当缓冲区中的另一个位置需要缓存条目时,我们需要考虑缓存区允许空闲缓存的秒数。将此参数设置为0意味着您的缓存可能充满了新项,并且不能缓存新条目。
apc.gc_ttl整数
那缓存项生活垃圾收集列表的秒数。此值提供了一个事件,执行缓存源文件时服务器进程是死的错误保护。如果源文件被修改,内存分配的缓存条目旧版本将不能恢复到设置的参数达到TTL值。设置为0是这个功能的禁止。
apc.cache_by_default布尔
默认的,但它可以被设置为关闭,使用与apc.filters开始用加号连接,和文件仅缓存只有当滤波器的匹配。
apc.filters字符串
一个逗号分割的POSIX扩展正则表达式的列表。如果任何模式匹配的源文件的名称,文件将不会被缓存。注意,用来匹配文件名的文件传递给包括 /要求的名字,而不是绝对路径。如果正则表达式的第一个字符是+,那么这个表达意味着任何匹配表达式的文件将被缓存。如果第一个字符是-那么任何匹配都不会被缓存-它是默认值,所以可以省略它。
apc.mmap_file_mask字符串
apc.slam_defense整数
在一个非常繁忙的服务器,无论你启动服务或修改文件,你会多进程来缓存相同的文件在同一时间。这个选项设置过程中跳过尝试缓存文件没有被缓存的百分比。或者你可以想象一下这是一个概率,分离过程跳过缓存。例如,建立apc.slam_defense 75意味着过程都有75%的概率不缓存不缓存文件。因此,更高的设置,更多的缓存可以减少碰撞的概率设为0禁用此功能。
apc.file_update_protection整数
当你修改一个文件在运行的服务器,你应该执行原子操作,写一个临时文件,然后重命名(MV)文件到其最终位置时完成。很多文本编辑器,CP,焦油,和其他一些类似的节目不都是这样做的。这意味着一个机会来访问(缓存)的文件,当文件仍然是写的apc.file_update_protection设置允许缓存标志新文件的延迟。默认值是2,这意味着该文件将不被缓存,如果该文件的时间距离的访问时间被发现是小于2秒。不幸的人访问该文件的用户将看到一半的怪现状,但至少这是没有的情况下,如果你是当然,你经常使用原子操作来更新你的文件,你可以通过设置这个参数到0关闭这个保护。如果你的系统充满IO操作并导致更新程序需要超过2秒,你可能需要增加这个值。
apc.enable-cli整数
主要用于测试和调试,为CLI版本PHP启动APC函数。一般来说,您不会期望为每个CLI请求创建、移植和放弃APC缓存,但是对于各种测试用例,打开APC非常容易。对于CLI版本。
希望本文能对大家的PHP程序设计有所帮助。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。