[英]What happens when a php file (which is currently in use) is uploaded to server?
案件:
我有一个PHP脚本,当前正由许多用户执行。
此脚本需要一些时间才能完成(例如,从浏览器获取数据,处理数据,更新数据库等)
现在我修改了脚本,然后使用FTP客户端将其上传到服务器。 FTP客户端愉快地上传它并说上传。
那现在真的发生了什么?
当我上传修改后的脚本时,当前执行会发生什么?
我想出的可能性是:
1)所有当前的执行都是拧紧的。
上载新脚本时,执行停止。 如果是这种情况(我不这样做),如何在不影响当前执行的情况下将脚本上传到服务器?
2)使用旧脚本完成当前执行。 当新请求到来时,它将使用新修改的脚本进行处理。
3)还有别的吗?
假设你有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,则脚本将使用旧代码执行,直到您重新启动apache。
如果没有,嗯,你根本就不知道,但我投票给第2号解决方案:脚本应该在执行时“在内存中”,然后在执行结束时丢弃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.