win2003下PHP使用preg_match_all导致apache崩溃问题的解决方法

win2003下PHP使用preg_match_all导致apache崩溃问题的解决方法

小编的平台是windows server 2003(32位系统) + Apache/2.2.9 (Win32) + PHP/5.2.17,在使用正则表达式 preg_match_all (如 preg_match_all("/ni(.*?)wo/", $html, $matches);)进行分析匹配比较长的字符串 $html 时(大于10万字节,一般用于分析采集回来的网页源码),Apache服务器会崩溃自动重启。     在Apache错误日志里有这样的提示: 代码如下:[Thu Apr 11 18:31:31 2013] [notice] Parent: child process exited with status 128 -- Restarting. [Thu Apr 11 18:31:31 2013] [notice] Apache/2.2.9 (Win32) PHP/5.2.17 configured -- resuming normal operations [Thu Apr 11 18:31:31 2013] [notice] Server built: Jun 13 2008 04:04:59 [Thu Apr 11 18:31:31 2013] [notice] Parent: Created child process 2964 [Thu Apr 11 18:31:31 2013] [notice] Disabled use of AcceptEx() WinSock2 API [Thu Apr 11 18:31:31 2013] [notice] Child 2964: Child process is running [Thu Apr 11 18:31:31 2013] [notice] Child 2964: Acquired the start mutex. [Thu Apr 11 18:31:31 2013] [notice] Child 2964: Starting 350 worker threads. [Thu Apr 11 18:31:31 2013] [notice] Child 2964: Listening on port 80.     经过查阅Apache官方以及论坛资料后,发现win平台下用正则 preg_match_all 或preg_match 分析比较长的字符串时,导致apache崩溃重启的原因是windows平台下默认分配的线程堆栈空间 ThreadStackSize 太小导致的。 win32默认只有256KB,而在 linux下默认值是 8M,这就是为什么同样的程序在 linux平台下正常,而在 win平台下不正常的原因。     根据PCRE library的官方说明:256 KB 的堆栈空间对应的pcre.recursion_limit大小应该不超过524。 Here is a table of safe values of pcre.recursion_limit for a variety of executable stack sizes: 下面就是一张Stacksize和pcre.recursion_limit对应的建议安全值,超过这个数值就极有可能发生堆栈溢出,apache crash: 代码如下:Stacksize   pcre.recursion_limit  64 MB      134217  32 MB      67108  16 MB      33554   8 MB      16777   4 MB      8388   2 MB      4194   1 MB      2097 512 KB      1048 256 KB      524
Linux cp命令参数简介

Linux cp命令参数简介

cp (复制档案或目录) 参数: -a :相当于 -pdr 的意思; -d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身; -f :为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制; -i :若目的n(destination)已经存在时,在覆盖时会先询问是否真的动作! -l :进行硬式连结 (hard link) 的连结档建立,而非复制档案本身; -p :连同档案的属性一起复制过去,而非使用预设属性; -r :递归持续复制,用于目录的复制行为; -s :复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
由Apache 500错误引出的临时文件问题分析解决

由Apache 500错误引出的临时文件问题分析解决

查看apache日志,发觉是mod_fcgid模块异常,提示"Connection reset by peer:mod_fcgid:error reading data from FastCGI server"、"Premature end of script headers:index.php"、"process /usr/... apache/cgi-bin exit(communication error, get unexpected signal 7",说白了就是php提前终止执行,没有返回header就退出。
LNMP服务器环境配置 (linux+nginx+mysql+php)

LNMP服务器环境配置 (linux+nginx+mysql+php)

一、简介   Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过三年了。Igor Sysoev在建立的项目时,使用基于BSD许可。   在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。
CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)运行环境步骤

CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)运行环境步骤

一、简介什么是LAMP LAMP是一种Web网络应用和开发环境,是Linux, Apache, MySQL, Php/Perl的缩写,每一个字母代表了一个组件,每个组件就其本身而言都是在它所代表的方面功能非常强大的组件。 LAMP这个词的由来最早始于德国杂志“c't Magazine”,Michael Kunze在1990年最先把这些项目组合在一起创造了LAMP的缩写字。这些组件并不是开始就设计为一起使用的,但是,这些软件都是开源的,可以很方便的随时获得并免费使用,这就导致了这些组件经常在一起使用。这些组件的兼容性也在不断完善,为了改善不同组件之间的协作,已经创建了某些扩展功能,在一起的应用情形变得非常普便,因而成为目前最流行的web应用基础架构。
给Apache下的网站加速的方法总结

给Apache下的网站加速的方法总结

相信有很多做网站的朋友都在为自己的主机,VPS而头疼,总是会觉得速度慢,但是想要速度快的话又得花费过大,怎么样才能让网站速度快,又经济呢。今天这里分享一下在Apche下通用的一些加速技巧,IIS7的请绕道。
21个常用的apache .htaccess文件配置技巧分享

21个常用的apache .htaccess文件配置技巧分享

Apache Web 服务器可以通过 .htaccess 文件来操作各种信息,这是一个目录级配置文件的默认名称,允许去中央化的 Web 服务器配置管理。可用来重写服务器的全局配置。该文件的目的就是为了允许单独目录的访问控制配置,例如密码和内容访问。
linux NFS 学习笔记

linux NFS 学习笔记

NFS,是Network File System的简写,即网络文件系统。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS. NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
linux NFS安装配置及常见问题、/etc/exports配置文件、showmount命令

linux NFS安装配置及常见问题、/etc/exports配置文件、showmount命令

1,服务器端软件:安装nfs-utils和portmap(rpcbind) nfs-utils: 提供rpc.nfsd 及 rpc.mountd这两个NFS DAEMONS的套件 portmap: NFS其实可以被看作是一个RPC SERVER PROGRAM,而要启动一个RPC SERVER PROGRAM,都要做好PORT的对应工作,而且这样的任务就是由PORTMAP来完成的。通俗的说PortMap就是用来做PORT的mapping的。 NFS需要启动的DAEMONS:参考