将php文件(当前正在使用)上载到服务器时会发生什么情况?

将php文件(当前正在使用)上载到服务器时会发生什么情况?,php,file-upload,ftp,Php,File Upload,Ftp,案例: 我有一个PHP脚本,目前正由许多用户执行。 此脚本需要一些时间才能完成(例如,从浏览器获取数据、处理数据、更新数据库等) 现在我修改了脚本,并使用FTP客户端将其上传到服务器。 FTP客户端很高兴地上传了它,并说上传了 现在这里到底发生了什么? 当我上传修改后的脚本时,当前执行情况如何 我想到的可能性是: 1)所有当前执行都已拧紧。 上载新脚本时,执行停止。 如果是这种情况(我祈祷不是这样),如何将脚本上载到服务器而不影响当前的执行 2)当前执行使用旧脚本完成。当一个新的请求出现时,它

案例:
我有一个PHP脚本,目前正由许多用户执行。
此脚本需要一些时间才能完成(例如,从浏览器获取数据、处理数据、更新数据库等)

现在我修改了脚本,并使用FTP客户端将其上传到服务器。 FTP客户端很高兴地上传了它,并说上传了


现在这里到底发生了什么?
当我上传修改后的脚本时,当前执行情况如何

我想到的可能性是:

1)所有当前执行都已拧紧。
上载新脚本时,执行停止。 如果是这种情况(我祈祷不是这样),如何将脚本上载到服务器而不影响当前的执行

2)当前执行使用旧脚本完成。当一个新的请求出现时,它将使用新的修改脚本进行处理


3)还有什么吗?

如果服务器上有APC,脚本将使用旧代码执行,直到重新启动apache


如果不是,那么,您根本不知道,但我投票支持解决方案编号2:脚本在执行时应该“在内存中”,然后在执行结束时丢弃

假设您有
index.php
,它会进行一些密集的计算,花费相当长的时间,然后调用
process.php

访问者来到您的网站并加载
index.php
。这将由web服务器软件(Apache、nginx、IIS等)加载到内存中,并提供给访问者。当访问者在
index.php
上运行这些计算时,您决定上载
index.php
process.php
的更新版本。此时,访问者将继续运行
index.php
旧版本,直到刷新页面,他们才会看到新版本


但是,在旧版本的
index.php
调用之后,他们将看到新版本的
process.php
。这是因为服务器读取调用的任何文件,将其加载到内存中,并将其提供给在服务器和用户之间创建会话的用户。如果用户试图在部分上载process.php或index.php时获取它,他们将得到一个错误。

您的服务器上是否启用了APC?@Burhan重新启动apache是什么意思?对于每个文件修改(比如index.php等),您都建议重新启动apache?非常感谢您的回复。“如果用户试图在部分上载的过程中获取process.php或index.php,则会出现错误。”部分上载是什么意思?只有在上传整个文件后,该文件才可用。对吗?让我们以一个文件上传脚本为例。用户选择文件并单击上载。目标文件是upload.php。这个文件处理文件,更新数据库等。在处理文件时,我上传了一个新版本的upload.php。现在,当前正在运行的进程会发生什么情况?如果服务器已经开始处理用户通过upload.php上传文件的请求,然后您上传了upload.php的新版本,那么如果您上传了新版本,将不会对已经启动文件上传进程的用户产生任何影响。部分上传是指某些服务器配置允许您访问未100%完成上传的文件。谢谢您的回复。我不知道部分上传的情况。您能告诉我更多关于导致这种情况的服务器配置吗(我使用的是apache服务器)。如果可能的话,你可以在答案中加上这些。我想,像我这样的人可能不知道这件事。不确定……我只在共享主机上见过这种行为。在我无数次安装Apache或IIS的过程中,使用默认设置,我从来没有遇到过这样的问题。即使启用了APC,整个文件(例如:index.php)也不总是缓存在APC no?APC是一个操作码缓存。因此,它会在第一次点击时将文件的“编译”字节码保存到Web服务器中,直到配置的TTL结束。Ok。让我们以APC未启用的情况为例