GVKun编程网logo

PHP中opcode缓存简单用法分析(php ob缓存)

8

本篇文章给大家谈谈PHP中opcode缓存简单用法分析,以及phpob缓存的知识点,同时本文还将给你拓展apc缓存类-缓存的php的opcode什么时候会更新?、CI框架网页缓存简单用法分析、Node

本篇文章给大家谈谈PHP中opcode缓存简单用法分析,以及php ob缓存的知识点,同时本文还将给你拓展apc缓存类 - 缓存的php的opcode什么时候会更新?、CI框架网页缓存简单用法分析、Node.js console控制台简单用法分析、php opcode 缓存等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

PHP中opcode缓存简单用法分析(php ob缓存)

PHP中opcode缓存简单用法分析(php ob缓存)

本文实例讲述了PHP中opcode缓存简单用法。分享给大家供大家参考,具体如下:

1.什么是opcode

解释器分析代码之后,生成可以直接运行的中间代码,就称做操作码,opcode

2.解释器与编译器的区别

解释器是生成了中间代码后直接运行中间代码,运行时的控制权还是在解释器手里。

编译器则是生成了中间代码之后还进一步优化代码,生成可以直接运行的目标程序 ,但不执行,等待用户触发执行,他的控制权在目标程序,和编译器无关。

3.PHP是解释型语言,他的原理与编译有点相似,包括词法分析,语法分析,语义分析.....,PHP解释器的核心引擎就是

4.PHP如何查看一段代码的opcode

安装PHP的parsekit扩展,通过扩展的api就可以查看PHP的opcode,如parsekit_compile_string()

rush:PHP;"> PHP -r "var_dump(parsekit_compile_string('print 1+1;'));"

5.opcode有生成

首先要经过词法分析,脚本代码可以看做是一系列单词组合,解释器要对这些单词进行分类,并打上记号

比如print,我们查看PHP源码包中的文件中我们就可以查找到pirnt对应的标记。T_PRINT

找到标记之后接下来就是语法分析,在函数

接着在zend/zend_compile.c中找到这个函数实现代码,这个函数就是实现 了opcode的转换。所有的opcode都是用户整数来表示 的。

6、 开启opcode缓存

生成opcode是需要系统开销的,每一次执行都要生成一次opcode,这样的开销还是可观的,所以PHP的优化必须开启opcode的缓存,来避免重复的编译。

PHP的opcode缓存有APC,eAccelerator,XCache,这些都是把opcode放在共享内存中。

以APC为例:在PHP.ini中设置

rush:bash;"> apc.cache_by_default = on

通过

rush:PHP;">

可以查看缓存的情况,

7.opcode缓存过期

opcode缓存是会过期的,如果过期就要得新生成一次,当然也可以跳过过期检查的机制,在PHP.ini中设置

rush:bash;"> apc.stat=off

这样程序代码的修改得通过重启服务器来生效。

8.脚本的跟踪与分析,可以使用xdebug来跟踪,用xdebug可以实现性能跟踪器,找到程序的执行瓶颈,从而优化程序。

rush:bash;"> xdebug.profiler_output_dir = /tmp/xdebug xdebug.profiler_output_name = cachegrind.out.%p

xdebug的函数跟踪:

rush:bash;"> xdebug.trace_output_dir = /tmp/xdebug xdebug.trace_output_name = trace.%c

window下可以用wincachegrind查看xdebug的报告文件。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

apc缓存类 - 缓存的php的opcode什么时候会更新?

apc缓存类 - 缓存的php的opcode什么时候会更新?

缓存的php的opcode什么时候会更新?

回复内容:

缓存的php的opcode什么时候会更新?

主要看你用什么进行缓存的了,在PHP官方的Opcache里,可以通过 php.ini 的 opcache.revalidate_freq 进行设置检查更新的周期

他有自己的查询周期。

当然周期时间你可以设定。

立即学习“PHP免费学习笔记(深入)”;

运气好的话,你发完代码刚好赶到opcode刷新缓存代码的时间。

CI框架网页缓存简单用法分析

CI框架网页缓存简单用法分析

本文实例讲述了CI框架网页缓存简单用法。分享给大家供大家参考,具体如下:

CodeIgniter 可以让你通过缓存页面来达到更好的性能。

尽管 CodeIgniter 已经相当高效了,但是网页中的动态内容主机的内存 CPU数据库读取速度等因素直接影响了网页的加载速度。 依靠网页缓存, 你的网页可以达到近乎静态网页的加载速度,因为程序的输出结果 已经保存下来了。

缓存是如何工作的?

可以针对到每个独立的页面进行缓存,并且你可以设置每个页面缓存的更新时间。 当页面第一次加载时,缓存将被写入到 application/cache 目录下的文件中去。 之后请求这个页面时,就可以直接从缓存文件中读取内容并输出到用户的浏览器。 如果缓存过期,会在输出之前被删除并重新刷新。

开启缓存

将下面的代码放到任何一个控制器的方法内,你就可以开启缓存了:

$this->output->cache($n); //其中 $n 是缓存更新的时间(单位分钟)

上面的代码可以放在方法的任何位置,它出现的顺序对缓存没有影响, 所以你可以把它放到任何你认为合理的地方。一旦该代码被放在方法内, 你的页面就开始被缓存了。

由于 CodeIgniter 存储缓存的方式,只有通过 view 输出的页面才能缓存。

如果你修改了可能影响页面输出的配置,你需要手工删除掉 你的缓存文件。

在写入缓存文件之前,你需要把 application/cache/ 目录的权限 设置为可写。

删除缓存

如果你不再需要缓存某个页面,你可以删除掉该页面上的缓存代码, 这样它在过期之后就不会刷新了。

注:

删除缓存代码之后并不是立即生效,必须等到缓存过期才会生效。

如果你需要手工删除缓存,你可以使用 delete_cache() 方法:

// Deletes cache for the currently requested URI
$this->output->delete_cache();
// Deletes cache for /foo/bar
$this->output->delete_cache(''/foo/bar'');

更多关于CodeIgniter相关内容感兴趣的读者可查看本站专题:《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于CodeIgniter框架的PHP程序设计有所帮助。

您可能感兴趣的文章:
  • CI框架数据库查询缓存优化的方法
  • CI框架中redis缓存相关操作文件示例代码
  • 让CodeIgniter数据库缓存自动过期的处理的方法
  • CodeIgniter启用缓存和清除缓存的方法
  • CodeIgniter辅助函数helper详解
  • CI(CodeIgniter)框架配置
  • CodeIgniter中使用cookie的三种方式详解
  • 解析php框架codeigniter中如何使用框架的session

Node.js console控制台简单用法分析

Node.js console控制台简单用法分析

本文实例讲述了Node.js console控制台简单用法。分享给大家供大家参考,具体如下:

在Node.js官方文档 https://nodejs.org/api/console.html 中描述了控制台的所有API方法。

Class: Console
 - new Console(stdout[, stderr])
 - console.assert(value[, message][, ...])
 - console.dir(obj[, options])
 - console.error([data][, ...])
 - console.info([data][, ...])
 - console.log([data][, ...])
 - console.time(label)
 - console.timeEnd(label)
 - console.trace(message[, ...])
 - console.warn([data][, ...])

当输出目标是终端或文件,控制台函数都是同步的(以防过早退出丢失信息);当目标是管道的时候,它是异步的(以防长时间的阻塞)。

node script.js 2> error.log | tee info.log

console.log([data][, …])

向标准输出另起一行打印

(1)此函数与 printf() 类似,可以带多个参数。%d 为输出整数,%s 为输出字符串,%j 为输出 JSON 的字符串格式

var name = ''chy'';
var age = 24;
var jsonInfo = {name:''chy'',age:''24'',location:''FuZhou''};
console.log(''%j => name=%s,age=%d'', jsonInfo, name, age);
// 输出 {"name":"chy","age":"24","location":"FuZhou"} => name=chy,age=24

(2)如果没有匹配到输出格式的话,会默认使用空格最为分隔符,依次打印多余的字符串。

console.log(''log'', ''arg1'', ''arg2'', 3);
//输出 log arg1 arg2 3

(3)在JS中对象默认就是JSON对象。因此只能用 ‘%j'' 或 默认的方式 打印

var person = new Object();
person.name = ''chy'';
person.age = 24;
person.location = ''FuZhou'';
console.log(person);
// 输出 { name:''chy'' ,age:24, location:''FuZhou'' }
console.log(''%s %j'', person, person);
// 输出 [object Object] {"name":"chy","age":"24","location":"FuZhou"}

console.dir(obj[, options])

对 obj 使用 util.inspect 并将结果字符串向标准输出打印。

console.time(label)

标记一个时间。

console.timeEnd(label)

结束一个 同样标签 的定时器,记录输出。浮点类型,单位毫秒,保留3位小数,即精确到微妙。

console.time(''cost time'');
console.timeEnd(''costTime'');
//输出 <node:4500> Warning: No such label ''costTime'' for console.timeEnd()
console.timeEnd(''cost time'');
//输出 cost time: 858.063ms

console.trace(message, […])

打印格式化的信息和当前位置的堆栈信息到标准错误输出,以上输出紧跟在 ‘Trace: message'' 之后另起一行后面。

console.assert(value[, message][, …])

类似 assert.ok(value[, message])。用于判断变量是否和预期的是一样的。

console.assert(true, ''does nothing'');
//输出 undefined
console.assert(false, ''Whoops %s'', ''didn\''t work'');
//输出 AssertionError: Whoops didn''t work
assert.ok(true, ''does nothing'');
//输出 undefined
assert.ok(false, ''Whoops didn\''t work'');
//输出 AssertionError: Whoops didn''t work

希望本文所述对大家nodejs程序设计有所帮助。

您可能感兴趣的文章:
  • 利用Js的console对象,在控制台打印调式信息测试Js的实现
  • js控制台输出的方法(详解)
  • JS简单实现仿百度控制台输出信息效果
  • JS实现淘宝支付宝网站的控制台菜单效果
  • javascript控制台详解
  • js调试系列 初识控制台
  • 禁用JavaScript控制台调试的方法
  • 利用浏览器的Javascript控制台调试PHP程序
  • JavaScript控制台的更多功能

php opcode 缓存

php opcode 缓存

最近在做php接口优化,其中一个优化是使用opcode 缓存 。 查阅资料后得知, 缓存 opcode可通过使用 apc、eAccelerator、XCache 三种扩展。 后来发现在我们的服务器上已经安装了eAccelerator 扩展,php.ini 配置如下: [eaccelerator] zend_extension="/usr/l

最近在做php接口优化,其中一个优化是使用opcode缓存

查阅资料后得知,缓存opcode可通过使用 apc、eAccelerator、XCache 三种扩展。

后来发现在我们的服务器上已经安装了 eAccelerator 扩展,php.ini 配置如下:

[eaccelerator]
zend_extension="/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626/eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/tmp/eaccelerator_cache"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

对照这些配置项的含义后,发现没有哪个配置明确说明 已经开启缓存opcode的功能。

立即学习“PHP免费学习笔记(深入)”;

如果已经开启了,怎么才能证明,使用了opcode缓存。怎么查看缓存的命中率、缓存状态等相关信息?

关于PHP中opcode缓存简单用法分析php ob缓存的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于apc缓存类 - 缓存的php的opcode什么时候会更新?、CI框架网页缓存简单用法分析、Node.js console控制台简单用法分析、php opcode 缓存的相关知识,请在本站寻找。

本文标签: