首页 > 系统相关 >PHP多进程简单解释

PHP多进程简单解释

时间:2023-12-22 14:23:17浏览次数:38  
标签:解释 php xxx 食谱 厨师 人写 进程 PHP

之前有人问我,同一个类代码就一份,那么多请求调用,数据不混在一起了吗?

我觉得这可能是每一个刚开始面向对象编程的phper的疑惑,下面简单的说一说。

首先,了解几个概念“多进程”和“多线程”,了解了这个以后下面理解起来就简单了。

本质上你写了一个class,它什么都不是,仅仅是一堆变量和一系列函数的集合。只是语言底层帮你做了一些限制,让这个集合里面的变量或者函数只能通过className.xxx的方式来访问和调用。

而php是多进程的。你可以把php代码看成一个食谱,食谱是什么呢?食谱什么都不是,它仅仅是一系列的步骤,让看它的人跟着它的指示进行下一步。没有厨师,食谱毫无意义。当用户请求执行xxx.php,就相当于来了个厨师拿了xxx这个食谱然后按照食谱上写的步骤开始烹饪。同时有多个对xxx.php的请求,相当于同时来了多个厨师,他们的共同点是:他们拿着同一份食谱,意味着他们之后会干相同的事情。但是每个厨师都是独立的,他们有他们自己的食材和锅,所以是互不影响的。

延伸一下,PHP的单例模式,我继续用上面的例子来讲。对于某个厨师,他在按照食谱进行烹饪的时候,其中可能会需要多次放一勺70%盐+20%孜然+10%味精的混合物。那么对于这样可能会反复用到的对象,他可以提前做一罐放在那儿,之后要用就不需要每次去按比例混合,直接从罐子里取一勺就好了。这就是单例。

那么你可能还有疑问,我电脑只有一个CPU进行运算,我同时多个请求来了怎么办?很简单,轮流使用呗。

这个答案可能比较让人惊讶,但事实就是如此。就好比说有100个人要写作文,但是只有一张纸,怎么办呢?那只能每个人写两句然后下一个人写,等大家都写完了,又轮到第一个人写。这看起来简直就没办法写下去了嘛!但是想象一下,如果速度非常非常快,你写了一个字后你的纸被拿走给别人写,但是0.0000001秒之后大家都写完了,纸又回到了你的手上,而且别人的字迹都被擦干净了,你写的内容还在原来的位置。在这么短的时间内切换,你完全感觉不到纸被拿走过,你会觉得是自己独占地使用这张纸。这就是操作系统的进程切换,PHP也是这个道理。

 

 

 

转载出处:https://blog.csdn.net/weixin_36341727/article/details/116250811

标签:解释,php,xxx,食谱,厨师,人写,进程,PHP
From: https://www.cnblogs.com/jghdream/p/17921487.html

相关文章

  • 文件锁-防止进程重复启动
    funcLock(){ lockFile:="./lock.pid" lock,err:=os.Open(lockFile) iferr==nil{ deferlock.Close() filePid,err:=ioutil.ReadAll(lock) iferr==nil{ pidStr:=fmt.Sprintf("%s",filePid) pid,_:=strconv.Atoi(pi......
  • 我写的蓝宝石留言本php版v7.5
    蓝宝石留言本php版v7.5蓝宝石留言本php版采用原生php,html5,css3,jquery编写,在php5.6.40~php8.x下调试通过。本留言本使用了utf-8编码。include/config1.php是数据库连接参数的配置文件,include/config2是留言板参数的配置文件,include/config1.php可以直接编辑或者在安装时修......
  • PHP读取word文档
    1.安装1.1composer安装phpoffice/phpwordcomposerrequirephpoffice/phpword1.2后台代码 $file=$this->request->request('file');if(!$file){$this->error(__('Parameter%scannotbeempty','file......
  • 查看占用端口的进程号
    1)通过下面的命令可以查看占用端口的进程号:netstat-nao|findstr"8080"2)可以通过taskkill-pidxxxx-f命令杀死进程,也可以通过任务管理器,找到对应pid的进程,然后直接右键结束进程即可解除端口占用taskkill-pidxxxx-f......
  • java中对于jvm虚拟机进程的操作类
    在java中,Runtime类表示运行时操作类,是一个封装了JVM进程的类,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化。下面图示演示了其方法以及应用。......
  • php 在laravel中集成grpc
    在laravel中集成使用grpc一、安装:1、macOSphp扩展:peclinstallgrpc,peclinstallprotobufprotocbuf:brewinstallprotobufetcd:brewinstalletcd2、ubuntu:php扩展:peclinstallgrpc(如果遇到[Makefile:1038:src/core/lib/comp......
  • wp-config.php的配置文件
    <?php/***ThebaseconfigurationforWordPress**Thewp-config.phpcreationscriptusesthisfileduringthe*installation.Youdon'thavetousethewebsite,youcan*copythisfileto"wp-config.php"andfillinthevalues.**......
  • Windows phpstudy vscode Xdebug调试无效,无法监听,没有什么效果
    Windows phpstudy vscodeXdebug调试无效,无法监听,没有什么效果vscode正常,能启动,能标记,就是无法监听打印phpinfo(); Xdebug版本3打印的信息输入这里,找出对应PHPXdebug的dll文件Xdebug:Support—TailoredInstallationInstructions会出给检查结果,下面是我的再看看VSCODE插......
  • PHP本地进行API接口测试的实例
    最近写API接口,每写一个接口,我自己需要先测试一下,看有没有语法错误,请求的数据对不对,但是很多都是POST请求,没法直接在浏览器中打开链接进行测试,所以必须要有个可以在本地发HTTP请求的模拟工具,模拟一下数据请求。一开始我是这么干的,在本机wampserver运行目录下创建一个文件,在里边写Cu......
  • webmen等框架真的比php-fpm快吗?
    php-fpm+nginx代码<?phpusleep(100000);echo"helloworld";?>wrk-c200-t50-d10shttp://127.0.0.1/Running10stest@http://127.0.0.1/50threadsand200connectionsThreadStatsAvgStdevMax+/-......