今天在调试上传文件接口的时候发现了一个奇怪的错误,当上传的文件超过一定大小时$_FILES数组会变成空的。仔细研究了一下,发现这还是个挺冷门的错误。原因在于使用Nginx+PHP时,系统中一共有三个上传文件的大小限制:
- php.ini 里的 upload_max_filesize
- php.ini 里的 post_max_size
- nginx.conf 里的 client_max_body_size
今天在调试上传文件接口的时候发现了一个奇怪的错误,当上传的文件超过一定大小时$_FILES数组会变成空的。仔细研究了一下,发现这还是个挺冷门的错误。原因在于使用Nginx+PHP时,系统中一共有三个上传文件的大小限制:
前两天看到一篇文章《如何使用PHP编写daemon process》,其中对核心代码却没有细说,我又查了一些资料,还看了一本《理解Unix进程》,才搞明白生成守护进程的时候发生了什么。
这段代码是这个样子的:
function run()
{
//第一次fork,父进程与子进程在此分开
if(($pid1 = pcntl_fork()) === 0)
{
//子进程在此成为会话组leader
posix_setsid();
//第二次fork,子进程与孙子进程在此分开
if(($pid2 = pcntl_fork()) === 0)
{
//孙子进程成为守护进程,开始处理任务
handle_http_request('www.codinglabs.org', 9999);
}
else
{
//子进程退出,将孙子进程交由init托管
exit;
}
}
else
{
//父进程在此等待子进程的退出信号
pcntl_wait($status);
}
}