Environment

  1. Mac
  2. PHP 7.1

Process

Mac

  • 在 Mac 上,可以使用 brew 系列命令进行软件包的操作。在国内的情况下,需要先切换其镜像源。
brew install php@7.1

PHP

  • 在 /usr/local/etc/php/7.1/php-fpm.conf 配置 PHP 进程管理的全局参数。
; 一般可以配置进程ID的文件路径,不配置也不会有什么问题,但是建议还是配置。
pid = run/php-fpm.pid; php-fpm 错误日志保存路径,如果资源允许,就配置下啦。
error_log = log/php-fpm.log; 错误日志写入等级,等级越高,记录的日志量越少。
log_level = warning;紧急重新启动间隔用于确定何时启动正常重新启动的时间间隔。这对于解决加速器共享内存中的意外损坏非常有用。
; Available Units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
emergency_restart_threshold = 1
emergency_restart_interval = 3h; Time limit for child processes to wait for a reaction on signals from master.
; Available units: s(econds), m(inutes), h(ours), or d(ays)
; Default Unit: seconds
; Default Value: 0
process_control_timeout = 65s; FPM 创建的进程数量最大限制。作为 dynamic PM 时,进程数量的限制。还是很有必要设置的,不然会随着请求量的增加,创建大量进程,抢占 CPU,造成服务停摆。
process.max = 5000; 开启守护进程
daemonize = yes; 其他参数不作处理就可以了。
  • 在 /usr/local/etc/php/7.1/php-fpm.d 目录下,在对应的文件里配置非局部的参数。
; 指定进程池,默认值就可以了。
[www]; 不配置用户组和用户,会报错。默认值就可以了。
user = www
group = www; 配置监听端口,一般默认是9001,如果已经被占用了,就换其他的好了。但一定要在 Nginx 响应的配置里对应上。
;也有采用 socket 方式做监听的。以上两种方式各有千秋。
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
;                            a specific port;
;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses
;                            (IPv6 and IPv4-mapped) on a specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
;'/path/to/unix/socket' - to listen on a unix socket.    //在没有历史配置的情况下,不存在此路径
; fastcgi_pass unix:/dev/shm/php-cgi.sock;    //在 /dev/shm/php-cgi.sock 下,文件存在,运行正常
listen = 127.0.0.1:9003; 当 pm 参数配置太小,无法满足请求时,会在日志(error_log)生成相应的警告。同时,会造成TCP连接数飙升,Nginx请求堵塞,内存也飙升。
; 当发现 php-fpm 进程占据大部分CPU和内存时,首先要降低 process_idle_timeout ,其次是降低空闲进程数。
; static(静态)或者dynamic(动态),如果dm设置为static,那么其实只有pm.max_children这个参数生效(如果采用云服务器,可以根据其监控与统计来设置参数值)
pm = dynamic; 静态方式下开启的php-fpm对应端口进程数量,在动态方式下他限定php-fpm对应端口的最大进程数(这里要注意pm.max_spare_servers的值只能小于等于pm.max_children)
; 当 pm 配置为 'static'、 'dynamic' 或者 'ondemand' 时,子进程创建数量的限制。还是很有必要设置的,不然会随着请求量的增加,创建大量进程,抢占 CPU,造成服务停摆(说两遍,划重点)。
pm.max_children = 10000; 动态方式下的起始php-fpm对应端口进程数量 min_spare_servers + (max_spare_servers - min_spare_servers) / 2。这里不要设置太大,不然会占很多服务器资源
pm.start_servers = 500; 动态方式空闲状态下的最小php-fpm对应端口进程数量,这里不要设置太大,不然会占很多服务器不必要的资源。根据业务并发量设置即可。
pm.min_spare_servers = 100; 动态方式空闲状态下的最大php-fpm对应端口进程数量
pm.max_spare_servers = 1000; php-fpm对应端口进程时间限制。不要设置太大,不然空闲的进程会大量消耗CPU和内存。
pm.process_idle_timeout = 1s;;每个子进程在重新启动前应执行的请求数。
;这对于解决第三方库中的内存泄漏非常有用。对于无休止的请求处理,请指定“0”。不建议设置 “0”。刷新子进程,以及其内存,这是很有必要点。
; Default Value: 0
pm.max_requests = 200; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
request_terminate_timeout = 65s; 配置进程内存,以便堆栈大小分配
php_admin_value[memory_limit] = 3072M
  • 在 /usr/local/etc/php/7.1/conf.d/ext-opcache.ini 文件里,配置扩展类库。这里配置是 opcache 的类库,其一般都在 PHP 安卓路径下的 lib 文件夹里。其他版本,其他类库的配置,一般都在 php.ini 里配置引入,并且响应的参数也在 php.ini 文件里配置。
; opcache 开启后,对编译过的 php 文件进行缓存,省去过多的重复编译,提高效率。
zend_extension="/usr/local/opt/php@7.1/lib/php/20160303/opcache.so"
  • 配置 php.ini 参数,设定上传文件参数大小限制。如果文件上传超过了这个限制,会报错:413 Request Entity Too Large 。
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; http://php.net/post-max-size
post_max_size = 10M; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 10M; Maximum number of files that can be uploaded via a single request
max_file_uploads = 30
  • 根据服务器资源,配置 php.ini 参数优化,提高资源使用率
; 输出缓存区大小配置。优化大量数据流输出,使一次输出大量列表数据成为可能。如果想要修改输出缓冲区的大小,确保使用的值是4(32位系统)或8(64位系统)的倍数。(默认4096)
output_buffering = 5120; 最大脚本进程执行时间
max_execution_time = 300; 最大脚本进程读取数据时间(默认60s)
max_input_time = 300; 最大脚步进程消耗内存大小(默认128M)
memory_limit = 5120M[opcache]
; Determines if Zend OPCache is enabled
opcache.enable=1; Determines if Zend OPCache is enabled for the CLI version of PHP
opcache.enable_cli=1; The OPcache shared memory storage size.
opcache.memory_consumption=256; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=64; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 1000000 are allowed.
opcache.max_accelerated_files=7000; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
opcache.validate_timestamps=1; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. ("1" means validate once per second, but only
; once per request. "0" means always validate)
opcache.revalidate_freq=3
  • 在其目录下,php-fpm 的启用命令。
; 开启 php-fpm
./php-fpm -D; 杀死 php-fpm 进程
pkill php-fpm; php-fpm master 进程可以理解一下以下的信号:
; INT, TERM 立刻终止
; QUIT 平滑终止
; USR1 重新打开日志文件
; USR2 平滑重载所有worker进程并重新载入配置和二进制模块
; 注意:pid = run/php-fpm.pid,master 主进程ID保存位置,在 php-fpm.conf 文件里可以配置
;关闭php-fpm:
kill -INT `cat /opt/php71/var/run/php-fpm.pid`
; 平滑重启php-fpm:
kill -USR2 `cat /opt/php71/var/run/php-fpm.pid`

Conclusion

不同的版本,对应的文件路径会有些出入,以上仅供参考,请君灵活处理。

References

转载本文,请注明出处、作者

PHP开发环境配置指南相关推荐

  1. Ubuntu18.04+CUDA10.2 深度学习开发环境配置指南

    深度学习 Author:louwill Machine Learning Lab 搞深度学习环境永远是第一步.笔者之前也写过配置的两篇文章,但时间久远,目前来看版本已经过旧了.之前两篇参考: 深度学习 ...

  2. JAVA开发环境配置指南

    进入Java世界之前,我们需要铺一条"路",才能通往Java的世界并且尽情遨游,那么这条"路"是什么呢?是的,就是Java的开发环境.今天我们一起来学习Java ...

  3. linux下opengl开发环境,Ubuntu 16.04 OpenGL 开发环境配置指南

    在 Visual Studio Code 中撰写一段测试程序 // test.c /* light.c 此程序利用GLUT绘制一个OpenGL窗口,并显示一个加以光照的球. */ /* 由于头文件gl ...

  4. Deepin系统初体验指南:从安装到开发环境配置

    深度操作系统(Deepin)是目前国内最流行和活跃的 Linux 发行版,一直以"免除新手痛苦.节约老手时间"为口号. 这篇文章落笔于 2020 年 10 月,此年,深之度正式发布 ...

  5. GPU环境配置指南(Ubuntu16.04+CUDA+CUDNN)

    前言 这两天由于种种原因,反复重装系统并配置了深度学习开发环境,无意中便总结了一份环境配置指南出来,所幸再稍加整理,和大家分享出来. 本指南确认无误的环境是: 系统是Ubuntu16.04 GPU是N ...

  6. 树莓派Raspberry Pico RP2040 开发环境配置完全缝合终极版C-SDK

    树莓派Raspberry Pico RP2040 开发环境配置骨灰版 总览目录 树莓派Raspberry Pico RP2040 开发环境配置骨灰版 前置说明 0.1 关于调试使用的Debugger ...

  7. 蓝鲸智云统一开发环境搭建指南

    腾讯官方的<蓝鲸智云统一开发环境搭建指南> 蓝鲸应用统一开发环境指南 一:背景 蓝鲸应用开发需要依赖django,celery,mysql-client等第三方库,而像celery又依赖其 ...

  8. 手把手带你入门深度学习(一):保姆级Anaconda和PyTorch环境配置指南

    手把手带你入门深度学习(一):保姆级Anaconda和PyTorch环境配置指南 一. 前言和准备工作 1.1 python.anaconda和pytorch的关系 二. Anconda安装 2.1 ...

  9. 深度学习环境配置指南/YOLOv8目标检测实践

    深度学习环境配置指南以YOLOV8 为例 简介 软件准备 部分安装难点 了解yolov8 准备yolov8运行的环境 跑一个例程 运行一个例程 Load a model 简介 实验室来了很多新同学,本 ...

最新文章

  1. flask restful 模板
  2. 算法设计与分析 Fibonacci数列问题的词典法(动态规划:词典)
  3. C# TCP sever client
  4. Spring IoC、AOP、Transaction、MVC 归纳小结
  5. 【AI学院】老司机手把手带学言有三的经典书籍《深度学习之图像识别》,需要的赶紧上车吧...
  6. MapReduce Java API-多输入路径方式
  7. html5 如何局部放大,【HTML5特效】挺简单的HTML5放大效果
  8. index 把@前的截断作为
  9. 2021年五一杯数学建模A题(疫苗生产调度问题)详细分析
  10. HTML ajax控件 目录树
  11. 综合演练 实现登陆功能 1124
  12. 索尼收购挪威公司Nevion 进一步增强其业务组合
  13. [原创]商品条码管理与条码打印管理软件的实现
  14. 聚类分析在SPSS上的实现与结果分析——基于SPSS实验报告
  15. excel锁定单元格不能修改_Excel如何锁定部分区域不被编辑,1分钟就学会
  16. 窗内网所有编程类视频大集合
  17. 计算机三维艺术设计基础,计算机艺术设计基础(修订版)
  18. PID调节的C语言及MATLAB实现方法
  19. 新一代云上基础技术和架构分论坛
  20. nodejs操作Excel表格

热门文章

  1. 为了监控老板,我用Python做了个摸鱼神器
  2. matlab建立ar时间序列模型_Matlab时间序列-AR-AR模型.doc
  3. 深入理解Linux虚拟内存管理(二)
  4. 结构体类型的定义及所占内存的字节数
  5. 京东智能云APP可用来做什么?
  6. 【软件工程】交付和维护
  7. Arduino mega2560蓝牙遥控小车简介
  8. 软件工程第六章——详细设计
  9. 线程同步互斥机制--互斥锁
  10. mysql查询优化方案