0℃
2014年11月19日
⁄ php
⁄ 被围观 4,453 view+
在php中又两个方法都是在请求快结束的时候执行。方法名分别是 register_shutdown_function和fastcgi_finish_request。虽然执行的时机差不多,但是功能和应用场景不一样。比较两个方法的区别不是本文的重点。本文的重点的说明两个方法的应用场景。
1.register_shutdown_function
功能:
注册一个方法,当一个请求request执行完毕时,调用这个注册的方法。注意,哪怕在执行过程中发生error导致本次请求被强制退出,注册的方法也会执行。
应用场景一:
可以利用他的特性,捕获一些错误的一些详细信息。示例代码如下:...
fastcgi_finish_request, register_shutdown_function阅读全文
0℃
在关于不要重复造轮子的二三事一文中,交代了一些背景和想法。本篇则完全是一些干货,列举一些我用过或者即将会用的PHP轮子,基本都符合我对好轮子的定义:开源、许可证宽松、容易集成的PHP项目,目有些已经集成在EvaEngine里面,希望能帮助别人少走弯路。
日志还会陆续补充更新,同时欢迎推荐补充。
标记语言
PHP Markdown
License : New BSD License
Source Code
Allo点评:Markdown在轻量级标记语言中已经俨然有一统天下的趋势,PHP Markdown应该是目前以PHP编写的最好的Markdown解析器。当然一般来说使用Mark...
php扩展阅读全文
0℃
2013年11月04日
⁄ php
⁄ 被围观 8,479 view+
mac在升级到mavericks后,php原本从5.2升级到5.4,如果你之前安装的php扩展将无法使用,接下来如何在重新安装php扩展呢?
第一步先打开xcode同意下协议
第二步在终端中运行xcode-select --install
第三步在终端下运行如下命令
brew update
brew doctor
//如果现出来错误就按照提示解决下
//直到出现Your system is ready to brew.如果你的brew已经准备好了,没有错误或者警告信息
brew install zlib
第四步编译安装php-memcache
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar zxvf memcache-2.2.7.tgz
...
mavericks, memcache阅读全文
0℃
2013年09月02日
⁄ php
⁄ 被围观 7,709 view+
写了一段很简单的代码示例,却发现运行起来速度很慢,出现性能问题的代码量并不大,排除了IO问题以后,写了一段测试代码,果然问题很快重现。
<?php
$y="1800";
$x = array();
for($j=0;$j<2000;$j++){
$x[]= "{$j}";
}
for($i=0;$i<30000;$i++){
if(in_array($y,$x)){
continue;
}
}
?>
[root@xp trace]# time php test.php
real 0m4.116s
user 0m4.070s
sys 0m0.028s
可以看出时间耗掉了4秒,下面用strace跟踪没拿到什么有效信息。
[root@xp trace]# ...
ltrace, strace, 代码跟踪阅读全文
0℃
2013年07月31日
⁄ php
⁄ 被围观 7,141 view+
用于图片裁剪。有以下特点:
1.能进行人脸识别。图片中有人脸,将自动视为人脸区域为重要区域,将不会被裁剪掉。
2.自动识别其它重要区域。如果图片中未识别出人脸,则会根据特征分布计算出重区域。
总而言之,自动识别图片中的重要区域,并且在图片裁剪时保留重要区域。
目前已经用于一淘玩客
效果演示:
原图:
常规从中间截取为 400 * 225 大小大图片。效果如下:
使用tclip裁剪图片效果如下:
安装步骤
源码下载
opencv2 下载地址 http://www.opencv.org.cn/index.php/Download
安装opencv2
此扩展依赖于o...
tclip, 图片裁剪阅读全文
0℃
2013年07月01日
⁄ php
⁄ 被围观 5,591 view+
request_terminate_timeout = 30
#表示等待30秒后,结束那些没有自动结束的php脚本,以释放占用的资源。
pm表示使用那种方式,就是static(静态)或者dynamic(动态)。在更老一些的版本中,dynamic被称作apache-like。
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数量。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
如果dm设置为static,那么其实只有pm.max_children这个参...
php-fpm优化阅读全文
0℃
在php.ini中这样设置disable_functions =eval是无法禁用eval的,根据php手册说明,eval是一个语言构造器而不是一个函数。
如果要禁用eval,则需要第三方扩展,使用Suhosin。
Suhosin是朝鲜语“守护神”的音译,是一个专门的安全小组开发的专门针对php进行安全加固的补丁程 序,已经进入freebsd gentoo的ports系统。效果很好的。
Suhosin是php增强型安全补丁,可以编译到静态内核中,也可以编译成php动态扩展。我个人强烈你建议静态联编。下面的以下先说静态安装步骤。当然你也可以在安装php后将它编译成php的动态扩...
eval禁用阅读全文
0℃
2013年01月31日
⁄ php
⁄ 被围观 6,733 view+
通过top发现php-fpm的进程很高,网站打开速度很慢,估计肯定某个PHP脚本执行时间过长,所以开启了php-fpm的slowlog来跟踪哪些php脚本执行过慢。
编辑php-fpm.conf文件
1.找到request_slowlog_timeout=0 这一行,默认值为0,表示不启用slowlog,将其值改为3s,表示跟踪执行时间达到或超过3s的脚本。
2.找到slowlog,它的值表示慢执行日志的路径。
修改完后重启php。日志内容:
[31-Dec-2012 09:50:00] [pool www] pid 2874
script_filename = /htdocs/blog/index.php
[0x0000000001cf4ff0] mysql_query() /htdocs/...
php-fpm, slowlog阅读全文
0℃
2012年12月28日
⁄ php
⁄ 被围观 16,574 view+
首先,我们需要达成以下一些共识:
/dev/shm 为linux下的内存目录,显然在这个目录下建立的东西会放在内存中,默认可以使用50%的内存,在内存不足时,可通过swap进行切换到磁盘。
inotify是linux下的文件系统事件监控,可以满足各种文件监控需要,提供了诸如inotify_init,inotify_read等接口,需要linux2.6或以上的内核(uname -a查看),cygwin下好像不能实现。
php默认是不提供支持inotify的扩展,所以我们需要通过pecl下载编译安装。
下载inotify (http://pecl.php.net/package/inotify),解压并安装:
tar...
php队列阅读全文
0℃
2012年12月13日
⁄ php
⁄ 被围观 4,235 view+
$local_file = 'test.zip';
$download_file = 'download.zip';
$download_rate = 20.5;//速度
if(file_exists($local_file) && is_file($local_file)) {
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($local_file));
header('Content-Disposition: filename='.$download_file);
flush();
$file = fopen($local_file, "r");
while (!feof($file)) {
...
php限制文件下载速度阅读全文