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

时间:2012-06-21 13:06:23

标签: php file-upload ftp

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

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


现在真的发生了什么?
当我上传修改后的脚本时,当前执行会发生什么?

我想出的可能性是:

1)所有当前的执行都被搞砸了    上载新脚本时,执行停止。    如果是这种情况(我不这样做),如何在不影响当前执行的情况下将脚本上传到服务器?

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

3)还有别的吗?

2 个答案:

答案 0 :(得分:5)

假设你有index.php做了一些密集的计算,花了相当多的时间,然后打电话给process.php

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

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

答案 1 :(得分:1)

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

如果没有,好吧,你根本就不知道,但我投票支持解决方案号 2 :执行时脚本应该是“在内存中”,然后在执行结束时丢弃。