我有以下PHP文件:
以下行为让我感到困惑:
- fileUploadForm.php
- handleUpload.php
- 如果有,输出 $_SESSION['errorMessage']
- 输出一个上传文件的表单,该表单提交到 handleUpload.php
- 验证会话(如果验证失败,则重定向到登录页面)
- 验证文件(如果验证失败,则设置 $_SESSION ['errorMessage'])
- 扫描病毒文件
- 移动文件
- 更新数据库
以下行为让我感到困惑:
当我观察tmp中的文件增长时,文件上传继续进行,即使超过了设置的max_input_time。 我的理解是,一旦超过max_input_time,脚本将终止,进而文件上传也将终止。 你对为什么不会发生这种情况有什么想法吗?
如果我在上传文件的过程中停止并刷新fileUploadForm(而不是重新提交它),则脚本将输出与在handleUpload中设置的与文件验证相关的错误消息。 这似乎表明即使文件上传未完成,handleUpload中的代码行也正在执行。 PHP是否异步执行脚本并接收表单数据? 我本来以为脚本会等到接收到所有表单数据后再执行任何代码。 但是我看到的行为与这个假设相矛盾。 数据POST /脚本执行的顺序是什么?
当max_input_time和其他配置值都设置得非常大以进行测试时,非常大的上传将完成。 但是,脚本的其余部分似乎就死了。 即病毒扫描和文件移动从未发生,数据库更新也没有。 我已经为脚本中的每个操作设置了错误处理,但没有抛出任何错误。 页面似乎已经死了。 有关为什么会发生这种情况/如何捕获此类错误的任何想法吗?