php index.php修改之后未生效

php index.php修改之后未生效

PHP项目修改了index.php 里面的代码,提交服务器之后,代码功能未生效,

解决办法:重启fpm

命令如下:

 /etc/init.d/php5-fpm restart

原因需要了解一下下面的东东:

1、CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者。

当web server(比如说nginx)收到/index.php这个请求后,会启动对应的CGI程序,这里就是PHP的解析器。接下来PHP解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以规定CGI规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。CGI是个协议,跟进程什么的没关系。

2、Fastcgi是用来提高CGI程序性能的。

那么CGI程序的性能问题在哪呢?"PHP解析器会解析php.ini文件,初始化执行环境",就是这里了。标准的CGI对每个请求都会执行这些步骤(不闲累啊!启动进程很累的说!),所以处理每个时间的时间会比较长。这明显不合理嘛!那么Fastcgi是怎么做的呢?首先,Fastcgi会先启一个master,解析配置文件,初始化执行环境,然后再启动多个worker。当请求过来时,master会传递给一个worker,然后立即可以接受下一个请求。这样就避免了重复的劳动,效率自然是高。而且当worker不够用时,master可以根据配置预先启动几个worker等着;当然空闲worker太多时,也会停掉一些,这样就提高了性能,也节约了资源。这就是fastcgi的对进程的管理。

3、PHP-FPM是一个实现了Fastcgi的程序

php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理,php_fpm就是调度php-cgi进程的程序;php-fpm的管理对象是php-cgi。但不能说php-fpm是fastcgi进程的管理器,因为前面说了fastcgi是个协议,似乎没有这么个进程存在,就算存在php-fpm也管理不了他(至少目前是)。

参考链接: http://www.mike.org.cn/articles/what-is-cgi-fastcgi-php-fpm-spawn-fcgi/

时间: 2024-11-03 22:35:27

php index.php修改之后未生效的相关文章

修改Hosts不生效的一个场景-web(转)

Update: 如果浏览器使用了代理工具,修改 Hosts 也不会生效.这里是因为,浏览器会优先考虑代理工具(如添加 pac 文件.SwitchySharp等)的代理,建议调试的时候先关闭这些代理. 使用 pac 文件代理有的时候部分文件的代理不生效,应该是 pac 对应的代理服务器上,做了部分处理. 部分浏览器也有 DNS 缓存,如 chrome(chrome://dns),这是为什么重启浏览器也不生效的原因,一般设定时间为 60s (如 Firefox). 浏览器有DNS缓存,系统也会存在

/profile文件修改后立即生效

修改profile etc/profile文件是只读的,直接用vi或gedit打开修改后是无法保存的.要修改profile,需要取得root权限,(使用gedit编辑) $sudo gedit /etc/profile 或者 $sudo -s $gedit /etc/profile 这样打开profile文件,修改后就可以保存了. /profile文件修改后立即生效 方法1: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # .  /etc/profile 注意: . 和

quick cocos2d-x Xcode下省去clean,让修改的脚本生效

<quick cocos2d-x Xcode下省去clean,让修改的脚本生效> 项目  target     build phases    点击build phase的空白区域 选择Editor     Add Build Phase      Add Run Script Build Phase 编写脚本: 顺序调整:(第二顺位) 这样就可以避免每次修改了lua脚本,都要手动clean,然后再run,太费时间.. quick cocos2d-x Xcode下省去clean,让修改的脚本生

jenkins定时任务未生效解决

近期在配置jenkins定时任务时,发现未生效,并没有按时触发任务 解决思路: 1.先查看下我们的定时任务有没有选择正确,如下说明: Poll SCM:定时检查源码变更,如果有更新就checkout最新code下来,然后执行构建动作. 如果没有更新就不会执行构建 Build periodically:周期进行项目构建(源码是否发生变化没有关系) 所以如果没有配GIT或SVN的话,周期执行就用Build periodically 2.选择了Build periodically后,还是未生效 有时候

让/etc/profile文件修改后立即生效(转)

方法1:让/etc/profile文件修改后立即生效 ,可以使用如下命令:# .  /etc/profile注意: . 和 /etc/profile 有空格方法2:让/etc/profile文件修改后立即生效 ,可以使用如下命令:# source /etc/profile 附:Linux中source命令的用法source命令:source命令也称为“点命令”,也就是一个点符号(.).source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录.用法: source f

让/etc/profile文件修改后立即生效

让/etc/profile文件修改后立即生效 方法1: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # .  /etc/profile 注意: . 和 /etc/profile 有空格 方法2: 让/etc/profile文件修改后立即生效 ,可以使用如下命令: # source /etc/profile 

WAS缓存导致的修改文件不生效问题【转】

WAS缓存导致的修改文件不生效问题: 解决方法: 一. 修改web.xml文件,需要修改以下三个目录下的文件: 1. /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/config/cells/10Cell01/applications/${应用名}.ear/deployments/${应用名}/${应用名}.war/WEB-INF 2. /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells

Java 项目中一种简单的动态修改配置即时生效的方式 WatchService

文章来源:https://www.cnblogs.com/fengzheng/p/9212155.html 这种方式仅适合于比较小的项目,例如只有一两台服务器,而且配置文件是可以直接修改的.例如 Spring mvc 以 war 包的形式部署,可以直接修改resources 中的配置文件.如果是 Spring boot 项目,还想用这种方式的话,就要引用一个外部可以编辑的文件,比如一个固定的目录,因为 spring boot 大多数以 jar 包部署,打到包里的配置文件没办法直接修改.如果是比较

docker根路径修改时不生效的问题

docker默认路径 $docker info 查看 需要修改为新的路径,但是unbuntu修改配置文件: sudo vim /etc/default/docker DOCKER_OPTS="--graph /home/zy/docker" 没有生效. $ ps -ef | grep docker 看启动参数,没有生效 谷歌发现,需要修改: sudo vim /lib/systemd/system/docker.service [Service]Type=notify# the def