在运行PHP程序,通常会遇到“Fatal Error: Allowed memory size of xxxxxx bytes exhausted”的错误, 这个意味着PHP脚本使用了过多的内存,并超出了系统对其设置的允许最大内存。解决这个问题,首先需要查看你的程序是否分配了过多的内存,在程序没有问题的情况下,你可以通过一下方法来增加PHP的内存限制(memory_limit)。

检查php的内存限制值

为了查看这个值,你需要建立一个空的php文件,比如view-php-info.php。然后将一下代码贴到里面。

<?php phpinfo(); ?>
将这个脚本放到你的PHP主机上,然后在浏览器中调用它。这时你可以看到你的PHP环境配置的信息,其中有一部分是关于”memory_limit”的, 如下图:

view-php-memory-limit

注:你可以用这种方法来查看php的其他参数设置,不仅仅是memory_limit

memory_limit应该设为多少?

这个完全依赖于你的应用的要求。比如Wordpress,运行起核心代码需要32MB。Drupal 6则要求这个值最小为16MB,并推荐设置为32MB。如果你又安装不少的插件(plugins),尤其是那些要进行图像处理的模块,那么你可能需要128MB或更高的内存。

如何设置memory_limit

方法1: php.ini

最简单或常用的方法是修改php.ini

首先找到对你的网站生效的php.ini文件
由于有多个地方都可以设置php的参数,找到正确的配置文件,并进行更改是首先要做的一步。如果你上面的方法建立了php文件来查看其配置参数,则你可以找到”Loaded Configuration File”这一项,以下是个例子:

php-ini-location

对于Linux用户,你可以通过执行”php -i | grep Loaded Configuration File”来找到对应的配置文件。而Windows用户,你可以尝试修改你的php安装目录下的php.ini。

编辑php.ini
在php.ini中,找到”memory_limit”这一项,如果没有,你可以在文件的尾部自己增加这个参数。以下是一些设置范例

memory_limit = 128M ; 可以将128M改为任何你想设置的值
保存文件

重启web 服务器
如果是web服务器使用Apache, 则执行:

httpd restart
有些情况下,你可能不被允许私修改php.ini。比如如果你购买了虚拟主机服务,但是你的服务商确禁止你修改这个文件。那么,你可以需要考虑用其他方法来增加memory_limit的值。

方法2: .htaccess

说明: 这种方法只有在php以Apache模块来执行时才生效.

在你的网站的根目录下找到”.htaccess”文件,如果没有,可以自己创建一个。然后把以下配置放入其中

php_value memory_limit 128M ; 可以将128M改为任何你想设置的值
方法3: 运行时修改php的内存设置

在你的php代码中增加以下命令行即可。

ini_set(‘memory_limit’, ‘128M’);
memory_limit修改失败

如果你使用虚拟主机,有可能会出现memory_limit的值修改失败。这个需要联系你的服务商看怎么处理,通常他们限制了可以设置的最大值或者根本就不允许你修改。如果他们的环境真的无法满足你的要求,那么你可能要考虑换一个主机服务商。

创建软链接即用 ln -s 原始文件或文件夹 目标文件或文件夹

说明:因为空间有限,不改变原来程序文件,再继续读取/data/ftp目录内容,只需要在/data2/上面建立软连接.

#建立软链接
mv /data/ftp /data2/
ln -s /data2/ftp /data/ftp
#删除软连接
#当删除链接文件时,如果不小心会把原始文件删掉
rm /data/ftp
#只是少了一个“ / ” 删除的 就是链接文件, 也就是在文件的最后不要加上”/”
结论:
在删除文件时要小心
在删除软链接文件时,小心使用 Tab 建,一定不要在目录后面加斜扛”/”

Read More →

1. 文件相关
快捷键 动作定义
Ctrl-O 打开文件
Ctrl-N 新建文件
Ctrl-S 保存文件
Ctrl-Alt-S 文件另存为
Ctrl-Shift-S 保存所有打开文件
Ctrl-P 打印
Alt-F4 退出程序
Ctrl-Tab 文件标签跳转,跳至下一个打开文件
Ctrl-Shift-Tab 文件标签跳转,跳至上一个打开文件
Ctrl-W 关闭当前文件
2.编辑相关
快捷键 动作定义
Ctrl-C 复制
Ctrl-Insert 同上,复制
Ctrl-Shift-T 复制当前行至剪贴板
Ctrl-X 剪切
Shift-Delete 同上,剪切
Ctrl-V 粘帖
Shift-Insert 同上,粘帖
Ctrl-Z 撤销上一次操作
Alt-Backspace 同上
Ctrl-Y 重做,注:撤销后,重做刚刚撤销的动作
Ctrl-A 全选
Alt-Shift-方向键 或 Alt + 鼠标左键
列选择模式
Ctrl + 鼠标左键 非连续性的多区域选择
ALT-C 列编辑器
Ctrl-D 复制当前行至下方,或者复制选中区域至其后
Ctrl-T 复制当前行至剪贴板(注:帮助中说是将当前行与上一行交换位置)
Ctrl-Alt-T 与上一行进行交换
Ctrl-Shift-Up 将当前行上移一行
Ctrl-Shift-Down 将当前行下移一行
Ctrl-L 删除当前行
Ctrl-I -(注:帮助中是分割多行,不过最新版中不起作用)
Ctrl-J 合并多行(注:使用时要选择中需要合并的行)
Ctrl-G 跳转至某行对话框
Ctrl-Q 添加/删除注释
Ctrl-Shift-Q 区块添加/删除注释
Tab (selection of one or more full lines) 插入Tab
Shift-Tab (selection of one or more full lines) 删除位置之前的Tab
Ctrl-BackSpace 删除当前位置至单词开始的内容
Ctrl-Delete 删除当前位置至单词结尾的内容
Ctrl-Shift-BackSpace 删除当前位置至行首的内容
Ctrl-Shift-Delete 删除当前位置至行尾的内容
Ctrl-U 转换为小写
Ctrl-Shift-U 转换为大写
Ctrl-B 跳转至配对的括号
Ctrl-Space 触发函数自动完成列表
Ctrl-Shift-Space 触发函数参数提示
Ctrl-Enter 触发关键字自动完成列表
Ctrl-Alt-R 整个页面文字方向从右到左
Ctrl-Alt-L 整个页面文字方向从左到右(注:在安装了zencoding后,此快捷键可能被覆盖)
Enter 回车
Shift-Enter 同上
建议添加一个快捷键用来复制当前行至下一行:在设置->快捷键管理中,选择scintilla commands中,找到SCI_LINEDUPLICATE,给它指定一个快捷键,例如Ctrl+M
3.搜索相关
快捷键 动作定义
Ctrl-F 打开搜索对话框
Ctrl-H 打开替换搜索对话框
F3 搜索下一个结果
Shift-F3 搜索上一个结果
Ctrl-Shift-F 文件中搜索
F7 调到寻找结果
Ctrl-Alt-F3 快速查找下一个
Ctrl-Alt-Shift-F3 快速查找上一个
Ctrl-F3 选定并寻找下一个
Ctrl-Shift-F3 选定并寻找上一个
F4 下一次寻找结果
Shift-F4 上一次寻找结果
Ctrl-Shift-I 增量查找
Ctrl-n 跳至下一个结果,用第n个风格标识(n为1~5,0是默认风格)
Ctrl-Shift-n 跳至上一个结果,用第n个风格标识(n为1~5,0是默认风格)
Ctrl-F2 收缩展开标签
F2 跳至下一个标签处
Shift-F2 跳至上一个标签处
4.显示相关
快捷键 定义内容
Ctrl-(Keypad-/Keypad+)或者Ctrl+鼠标滚轮
放大/缩小页面
Ctrl-Keypad/ 回复到原始页面大小
F11 开关全屏显示(显示标签页)
F12 开关全屏显示(不显示标签页)
Ctrl-Alt-F 收缩当前折叠
Ctrl-Alt-Shift-F 展开当前折叠
Alt-0 收缩所有折叠
Alt-(1~8) 展开相应层折叠
Alt-Shift-0 展开所有折叠
Alt-Shift-(1~8) 展开所有层次折叠
5.运行相关
快捷键 定义内容
F5 打开运行窗口
Alt-F1 获得PHP帮助
Alt-F2 用Google搜索
Alt-F3 用Wiki搜索哦
Alt-F5 在本标签页中打开当前目录中,与光标位置文本同名的文件
Alt-F6 在新标签页中打开当前目录中,与光标位置文本同名的文件
Ctrl-Alt-Shift-R 在Chrome中打开
Ctrl-Alt-Shift-X 在Firefox中打开
Ctrl-Alt-Shift-I 在IE中打开
Ctrl-Alt-Shift-F 在Safari中打开
Ctrl-Alt-Shift-O 通过Outlook发送当前文件

传统的 session 是写入到服务器文件中,可以在 php.ini 中看出,清单如下

session.save_handler = files
session.save_path = “sess保存路径”

但是,如果网站用户很多的话,session 的访问将势必影响网站的速度。因为文件的读取速度是很低的。
众所周知,memcache 作为内存缓存服务器,通过哈希算法,把数据以key->value的形式进行读取,其速度是远远高于文件的读取。
将 session 保存到 memcache 服务器的配置如下:
方式一:
打开 php.ini 文件,修改下面两个参数:

session.save_handler = memcache
session.save_path = “tcp://Mem服务器1:端口号,tcp://Mem服务器2:端口号…”

方式二:
在 php 文件中使用 ini_set 函数,进行配置,此方法会解决共享服务器的 php 的配置问题

<?php
….
ini_set(“session.save_handler”, “memcache”);
ini_set(“session.save_path”, “tcp://Mem服务器1:端口号,tcp://Mem服务器2:端口号…”);
….
?>

Read More →

我们在使用svn的时候,想提交了代码就能直接更新到我们的网站,这时候svn钩子就可以完成这件任务。废话少说,直接上代码

比如说我们的svn目录是 /home/svn  而我们的网站是home/wwwroot/myweb  这里我们生成一个文件 /home /svn/hooks/post-commit

1.我们要检出一下文件 如果提示没有myweb,你可以创建一下

#cd /home/wwwroot
#svn co svn://127.0.0.1/myweb

2.编辑我们的钩子脚本

#vi /home /svn/hooks/post-commit

内容为

#!/bin/sh

cd /home/wwwroot
svn co svn://127.0.0.1/myweb

保存后加上执行权限

#chmod +x /home /svn/hooks/post-commit

3.以上代码就可以完成功能,当然 post-commit 脚本也可以写成这个样

cd /home/wwwroot/myweb
svn up

Read More →