3

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

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


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

我想出的可能性是:

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

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

3)别的?

4

2 回答 2

5

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

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

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

于 2012-06-21T13:36:04.457 回答
1

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

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

于 2012-06-21T13:22:50.933 回答