echo如何在php上的服务器上工作?

时间:2017-04-19 23:27:14

标签: php server echo

总而言之,我试图从数据库中检索用户密码的盐。我计划这样做的方式是当有人试图登录时,它将使用他们的用户名并找到为该帐户保存的盐,服务器将回应它。我的问题是如果有多个人同时尝试登录,它会在同一个语句中回显两个盐,还是每个用户连接的回声分开?

1 个答案:

答案 0 :(得分:0)

假设您使用的是 Linux / Unix 和nginx。

首先请记住在Linux / UNIX中,一切都是文件

请求将如下所示:

浏览器 - > nginx->(FastCGI) - > php-fpm运行脚本 - >(FastCGI) - > nginx->浏览器

当请求到达nginx时,它会通过 FastCGI协议将它们发送到php-fpm。 php-fpm与master worker结构一起工作。有许多工作进程,请求将发送给工作进程。

当跑步" 回声你好" ,它将编译为操作码ECHO,并且zendVM最终将调用c函数 write()

  

ssize_t write(int fd,const void * buf,size_t count);

在UNIX中,一切都是文件。 socket也是文件,因此它写入socket" hello "终于。"你好"将响应nginx。而nginx将响应浏览器。

您不必担心许多请求会收到相同的消息。

FastCGI Specification

  

传输通过传输连接的所有数据   FastCGI记录。 FastCGI记录完成两件事。首先,记录   多路复用几个独立的FastCGI之间的传输连接   要求。这种多路复用支持能够的应用程序   使用事件驱动或多线程处理并发请求   编程技巧。其次,记录提供了几个独立的   单个请求中每个方向的数据流。这样,为   例如,stdout和stderr数据都可以通过单个传输传递   从应用程序到Web服务器的连接,而不是   需要单独的连接。

并且

  

应用程序记录包含有关特定请求 t的信息,   由 requestId 组件识别。

即使有很多请求,FastCGI协议也保证每个请求都会得到不同的requestId来识别每个请求。