>  기사  >  백엔드 개발  >  从C++转过来的,问问PHP初始化在哪儿?就是程序第一次启动需要读入配置数据那种?

从C++转过来的,问问PHP初始化在哪儿?就是程序第一次启动需要读入配置数据那种?

WBOY
WBOY원래의
2016-06-23 13:51:151004검색

比如在C++里有个main函数,可以做一些启动初始化的事情,读入配置表什么的,只要做一次
现在用PHP写服务端,这个类似的功能我需要加在哪儿呢?谢谢诶!


回复讨论(解决方案)

直接放在程序里!

直接放在程序里!



但是一次WEB的访问,服务端的对应PHP不是都会跑一次吗?那不是每次都执行一次读取资源的程序??如果PHP没有那么启动的MAIN函数,我是想创建一个全局的变量类,在这个类里面读取下资源。这个全局变量肯定只执行一次吧?

不要想当然!
你运行两个你用C++写的应用程序,难道其中的 main 函数只被执一次?

不要想当然!
你运行两个你用C++写的应用程序,难道其中的 main 函数只被执一次?



可能我从C++那边转不过来,对WEB服务器理解还不够到位啊,说下我的理解:

比如在C++里,启动一个服务程序,在启动过程中执行一次MAIN,然后这个服务程序是一直存在的,接下来就是接受客户端的各种数据包进行处理;

所以在PHP上,我也是觉得应该有这么个东西可以提供一个初始化的服务吧?比如我一些配置表放在MYSQL,启动的时候只要读一次到内存里就可以了,可以满足其他的WEB请求。但好像WEB里面客户端每访问一次页面,对应的PHP都要重新被执行一次。这里就搞不明白了。


直接放在程序里!



但是一次WEB的访问,服务端的对应PHP不是都会跑一次吗?那不是每次都执行一次读取资源的程序??如果PHP没有那么启动的MAIN函数,我是想创建一个全局的变量类,在这个类里面读取下资源。这个全局变量肯定只执行一次吧?
每个客户端访问如果用C++来对应的话就是重新打开一个程序客户端。
一般来说,PHP全局性的变量或者要运行的程序都是放在一个init.php文件,哪个文件需要使用这些全局化的配置信息可以包含这个文件。
对于同一个访问用户(SESSION没过期,一般SESSION是关闭浏览器之后算过期),对天这样的用户可以用session来存储相关的配置选项,这样用户在访问其他页面的时候可以直接从session中获取该用户的配置选项。



直接放在程序里!



但是一次WEB的访问,服务端的对应PHP不是都会跑一次吗?那不是每次都执行一次读取资源的程序??如果PHP没有那么启动的MAIN函数,我是想创建一个全局的变量类,在这个类里面读取下资源。这个全局变量肯定只执行一次吧?
每个客户端访问如果用C++来对应的话就是重新打开一个程序客户端。
一般来说,PHP全局性的变量或者要运行的程序都是放在一个init.php文件,哪个文件需要使用这些全局化的配置信息可以包含这个文件。
对于同一个访问用户(SESSION没过期,一般SESSION是关闭浏览器之后算过期),对天这样的用户可以用session来存储相关的配置选项,这样用户在访问其他页面的时候可以直接从session中获取该用户的配置选项。

那比如,我要载入的这个配置是要从mysql里面读取一份表。即使有一份公共的init.php,每个用户的web访问都会包含这个init.php,那不是仍然要每次都要去mysql做一次读取吗?

1、关于配置性的东西 你可以研究一下比较著名的PHP开发框架和现有的PHP开源程序,这些框架在初始化配置方面做的很好。2、从C/S架构转B/S架构比较难转换的概念是Web后端程序的存活周期,你做C++的话可以这样理解,你的Web后端没有While(true)这样的无限循环和阻塞,运行完了这个实例就销毁了,如果想留下你的运行状态信息、运行结果等,你只能将你的运行结果存储在一个特别的临时文件[session]中,这个临时文件在某个时候【这个可以设置,如果不设置的话一般是用户关闭浏览器】会销毁,在没有销毁的情况下,你再次打开这个程序,可以通过打开这个临时文件读取你那时的运行状态,然后继续按照这个点再运行。
3、Web后端程序一般为了良好的用户体验都会有超时限制,所以不能有类似While(true)之类的无限循环。

php 程序和c++桌面程序一样,每次启动时都要初始化环境
这一点你应该能够理解吧?

所谓服务程序,是常驻内存的程序。看似只需要初始化一次,其实不然
如果我启动两个这个服务程序(当然程序需设计的不会出现冲突)那么每个程序依然还是要完成自己的初始化的

php 是服务器端脚本,由 web 服务器启动,所以他不会常驻内存。
也就是每次调用都要初始化的原因




直接放在程序里!



但是一次WEB的访问,服务端的对应PHP不是都会跑一次吗?那不是每次都执行一次读取资源的程序??如果PHP没有那么启动的MAIN函数,我是想创建一个全局的变量类,在这个类里面读取下资源。这个全局变量肯定只执行一次吧?
每个客户端访问如果用C++来对应的话就是重新打开一个程序客户端。
一般来说,PHP全局性的变量或者要运行的程序都是放在一个init.php文件,哪个文件需要使用这些全局化的配置信息可以包含这个文件。
对于同一个访问用户(SESSION没过期,一般SESSION是关闭浏览器之后算过期),对天这样的用户可以用session来存储相关的配置选项,这样用户在访问其他页面的时候可以直接从session中获取该用户的配置选项。

那比如,我要载入的这个配置是要从mysql里面读取一份表。即使有一份公共的init.php,每个用户的web访问都会包含这个init.php,那不是仍然要每次都要去mysql做一次读取吗?
这个要看你这个是什么表,如果是用户的配置信息,不是很多内容的话可以用session存储。
如果是数据的话根据数据的内容来定,有的做cache有的就只能读了。

1、关于配置性的东西 你可以研究一下比较著名的PHP开发框架和现有的PHP开源程序,这些框架在初始化配置方面做的很好。2、从C/S架构转B/S架构比较难转换的概念是Web后端程序的存活周期,你做C++的话可以这样理解,你的Web后端没有While(true)这样的无限循环和阻塞,运行完了这个实例就销毁了,如果想留下你的运行状态信息、运行结果等,你只能将你的运行结果存储在一个特别的临时文件[session]中,这个临时文件在某个时候【这个可以设置,如果不设置的话一般是用户关闭浏览器】会销毁,在没有销毁的情况下,你再次打开这个程序,可以通过打开这个临时文件读取你那时的运行状态,然后继续按照这个点再运行。
3、Web后端程序一般为了良好的用户体验都会有超时限制,所以不能有类似While(true)之类的无限循环。



恩,你说的对,就是这两种架构在生存周期上不太一样,我一时还没转过来。
那如果在B/S架构中,那种全局唯一,只要初始化一次的东西放在哪儿?session的话也是要以同个用户作为一个单位吧?

php 程序和c++桌面程序一样,每次启动时都要初始化环境
这一点你应该能够理解吧?

所谓服务程序,是常驻内存的程序。看似只需要初始化一次,其实不然
如果我启动两个这个服务程序(当然程序需设计的不会出现冲突)那么每个程序依然还是要完成自己的初始化的

php 是服务器端脚本,由 web 服务器启动,所以他不会常驻内存。
也就是每次调用都要初始化的原因



明白了。就是PHP只是被调用的一个东西(比如一个用户访问一次),调用完就销毁了对吧?

对!
用完就完了,下次用时再起炉灶


1、关于配置性的东西 你可以研究一下比较著名的PHP开发框架和现有的PHP开源程序,这些框架在初始化配置方面做的很好。2、从C/S架构转B/S架构比较难转换的概念是Web后端程序的存活周期,你做C++的话可以这样理解,你的Web后端没有While(true)这样的无限循环和阻塞,运行完了这个实例就销毁了,如果想留下你的运行状态信息、运行结果等,你只能将你的运行结果存储在一个特别的临时文件[session]中,这个临时文件在某个时候【这个可以设置,如果不设置的话一般是用户关闭浏览器】会销毁,在没有销毁的情况下,你再次打开这个程序,可以通过打开这个临时文件读取你那时的运行状态,然后继续按照这个点再运行。
3、Web后端程序一般为了良好的用户体验都会有超时限制,所以不能有类似While(true)之类的无限循环。



恩,你说的对,就是这两种架构在生存周期上不太一样,我一时还没转过来。
那如果在B/S架构中,那种全局唯一,只要初始化一次的东西放在哪儿?session的话也是要以同个用户作为一个单位吧?
你直接说全局唯一,只初始化一次的东西是什么样的东西吧。

对!
用完就完了,下次用时再起炉灶


果断通俗易懂,一针见血。



1、关于配置性的东西 你可以研究一下比较著名的PHP开发框架和现有的PHP开源程序,这些框架在初始化配置方面做的很好。2、从C/S架构转B/S架构比较难转换的概念是Web后端程序的存活周期,你做C++的话可以这样理解,你的Web后端没有While(true)这样的无限循环和阻塞,运行完了这个实例就销毁了,如果想留下你的运行状态信息、运行结果等,你只能将你的运行结果存储在一个特别的临时文件[session]中,这个临时文件在某个时候【这个可以设置,如果不设置的话一般是用户关闭浏览器】会销毁,在没有销毁的情况下,你再次打开这个程序,可以通过打开这个临时文件读取你那时的运行状态,然后继续按照这个点再运行。
3、Web后端程序一般为了良好的用户体验都会有超时限制,所以不能有类似While(true)之类的无限循环。



恩,你说的对,就是这两种架构在生存周期上不太一样,我一时还没转过来。
那如果在B/S架构中,那种全局唯一,只要初始化一次的东西放在哪儿?session的话也是要以同个用户作为一个单位吧?
你直接说全局唯一,只初始化一次的东西是什么样的东西吧。

比如我开头说的,一份配置表。这份配置表是在MYSQL里面。这分配表对所有的用户都可以用。
通过刚才的讨论,得知PHP就是“用完就完了,下次用时再起炉灶”,所以如果这份配置代码(查询MYSQL,然后做一些调整)写在PHP里,那么用户每回访问的时候起都要执行一次PHP的代码。
那么从C++那种C/S架构来说,他在S端启动的时候,有个MAIN函数,然后在MAIN函数里面运行一次配置代码,把配置导入到服务端的内存里,其他用户要用,直接本地调用即可。

所以,我就发了这样一个帖子~这么说只能用一些缓存之类的来做了?




1、关于配置性的东西 你可以研究一下比较著名的PHP开发框架和现有的PHP开源程序,这些框架在初始化配置方面做的很好。2、从C/S架构转B/S架构比较难转换的概念是Web后端程序的存活周期,你做C++的话可以这样理解,你的Web后端没有While(true)这样的无限循环和阻塞,运行完了这个实例就销毁了,如果想留下你的运行状态信息、运行结果等,你只能将你的运行结果存储在一个特别的临时文件[session]中,这个临时文件在某个时候【这个可以设置,如果不设置的话一般是用户关闭浏览器】会销毁,在没有销毁的情况下,你再次打开这个程序,可以通过打开这个临时文件读取你那时的运行状态,然后继续按照这个点再运行。
3、Web后端程序一般为了良好的用户体验都会有超时限制,所以不能有类似While(true)之类的无限循环。



恩,你说的对,就是这两种架构在生存周期上不太一样,我一时还没转过来。
那如果在B/S架构中,那种全局唯一,只要初始化一次的东西放在哪儿?session的话也是要以同个用户作为一个单位吧?
你直接说全局唯一,只初始化一次的东西是什么样的东西吧。

比如我开头说的,一份配置表。这份配置表是在MYSQL里面。这分配表对所有的用户都可以用。
通过刚才的讨论,得知PHP就是“用完就完了,下次用时再起炉灶”,所以如果这份配置代码(查询MYSQL,然后做一些调整)写在PHP里,那么用户每回访问的时候起都要执行一次PHP的代码。
那么从C++那种C/S架构来说,他在S端启动的时候,有个MAIN函数,然后在MAIN函数里面运行一次配置代码,把配置导入到服务端的内存里,其他用户要用,直接本地调用即可。

所以,我就发了这样一个帖子~这么说只能用一些缓存之类的来做了?
是的





1、关于配置性的东西 你可以研究一下比较著名的PHP开发框架和现有的PHP开源程序,这些框架在初始化配置方面做的很好。2、从C/S架构转B/S架构比较难转换的概念是Web后端程序的存活周期,你做C++的话可以这样理解,你的Web后端没有While(true)这样的无限循环和阻塞,运行完了这个实例就销毁了,如果想留下你的运行状态信息、运行结果等,你只能将你的运行结果存储在一个特别的临时文件[session]中,这个临时文件在某个时候【这个可以设置,如果不设置的话一般是用户关闭浏览器】会销毁,在没有销毁的情况下,你再次打开这个程序,可以通过打开这个临时文件读取你那时的运行状态,然后继续按照这个点再运行。
3、Web后端程序一般为了良好的用户体验都会有超时限制,所以不能有类似While(true)之类的无限循环。



恩,你说的对,就是这两种架构在生存周期上不太一样,我一时还没转过来。
那如果在B/S架构中,那种全局唯一,只要初始化一次的东西放在哪儿?session的话也是要以同个用户作为一个单位吧?
你直接说全局唯一,只初始化一次的东西是什么样的东西吧。

比如我开头说的,一份配置表。这份配置表是在MYSQL里面。这分配表对所有的用户都可以用。
通过刚才的讨论,得知PHP就是“用完就完了,下次用时再起炉灶”,所以如果这份配置代码(查询MYSQL,然后做一些调整)写在PHP里,那么用户每回访问的时候起都要执行一次PHP的代码。
那么从C++那种C/S架构来说,他在S端启动的时候,有个MAIN函数,然后在MAIN函数里面运行一次配置代码,把配置导入到服务端的内存里,其他用户要用,直接本地调用即可。

所以,我就发了这样一个帖子~这么说只能用一些缓存之类的来做了?
是的


明白了哈。我先直接丢在PHP查询了,等有性能瓶颈的时候再用一些缓存配套进去。
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.