免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 907 | 回复: 0
打印 上一主题 下一主题

php中与内存有关系的函数和配置…… [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-20 18:19 |只看该作者 |倒序浏览
首先是在php.ini中的设置
memory_limit = 8M ; Maximum amount of memory a script may consume
output_buffering
/**
说明,如果一个脚本的执行超过了这个设置,是否会像mysql一样,自动释放
或连接结束,自动释放
多线程/进程如何共享一段内存数据?
*/
相关概念:ram,rom,内存泄露,内存溢出,缓存(Cache),内存,线程,进程,子进程?,共享,共享内存,虚拟机
内存:[EMS] memory
ob_start -- Turn on output buffering
ob_***
memory_get_usage() -- Returns the amount of memory allocated to PHP
unset() -- 释放给定的变量
变量使用内存的机制:?
0.Memcache Functions
1.Semaphore, Shared Memory and IPC Functions(本扩展模块在 Windows 平台下不可用)
相关函数:
扩展 shm
2.shmop_open -- Create or open shared memory block
可以用类似的技术来实现聊天室?(不用数据库,提高效率) 定义共享内存,即信号量(SEMAPHORE)
--------------------------------
--PHP源码分析:
  函数所使用的任何内存都应该通过 emalloc() 或者 estrdup() 来申请(见手册《函数中的内存管理》)
  emalloc()在Zend/zend_alloc.h 中定义:
    #define emalloc(size) _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC)
  //任何通过 emalloc() 或 estrdup() 都要用 efree() 在某个环节释放,除非它们本来就需要存在到程序结束
    否则就会出现!内存泄漏
  ob_* (ob_start,ob_get_contents,ob_end_clean)相关函数在main/output.c中实现,
   假设php程序中开始使用ob_start();而在结束时没有通过ob_end_clean();释放,在脚本结束时也会释放掉这部分内存,怎么实现的呢??
---------------------------------
--扩展知识:Cache
  由于网站的数据越来越多,我们渴求能更快速的调用数据,不必要每次都从数据库调,我们可以从其他的地方,比方一个文件,或者某个内存地址
,这就是php的缓存技术,也就是Cache技术.
-Apache中预创建Preforking MPM 机制剖析(1)
  
http://blog.csdn.net/tingya/archive/2006/08/09/1040799.aspx
-php进程后台调用
  
http://blog.iyi.cn/start/2006/11/php_6.html
-
---------------------------------
---demo---
修改 memory_limit = 1M
如果执行程序使用内存大于1M那么首先php会返回错误 Fatal error : Allowed memory size of 1048576 bytes exhausted (tried to
allocate 425001 bytes),
接着apache返回 '无法显示网页'的错误
测试代码:(证明 ob_*函数内的数据是暂时内存直到ob_end_clean()才得到释放 )
?php
echo $start = memory_get_usage();
echo '
';
ob_start();
for($i=0;$i10000;$i++){
$str .= '11111111111111111111111111111111111111111111111111';
}
$end = memory_get_usage();
//ob_end_clean();
echo '
';
echo $str;
echo memory_get_usage();
echo '
';
echo '='.($end-$start);
//把ob_*同时注释掉就可以看到效果 ($end-$start)=0 !
//修改参数值,可以看到->
//!内存溢出 Fatal error:…………
?>
---线程、进程---
PHP相关函数:
popen -- 打开进程文件指针  -> pclose($handle);
proc_open --  Execute a command and open file pointers for input/output
exec -- Execute an external program
Process Control Functions
PHP源代码分析: pthread_create()
-----------------------------------
---LAMPC---
Linux+Apache+Mysql+Php+C
EOF:End Of Function
17:04 2007-8-20
总结:你想得到的*技术*,其实别人也都想过甚至已经帮你实现好了,找找问问看,有你想看的!其他也一样..


文件:
2007-8-20.duk.rar
大小:
106KB
下载:
下载


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10152/showart_364103.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP