我有一个 php 脚本,它获取用户输入(一些文本和一个链接),将其放入数据库,然后使用用户提供的链接搜索图像。
问题是,有时搜索图片需要一段时间,这会使网站“卡住”,因此显示“您的帖子已提交!”的 View 有时需要 4 到 6 秒才能最终加载。
有没有办法让 PHP 异步搜索图片?
您可能想知道为什么我不只加载 View 然后进行图像搜索,或者只使用 AJAX。好吧,我需要数据库中的“最后插入 ID”来根据项目 ID 重命名图像,并且只有在将帖子插入数据库后才能完成此操作。
编辑 1: 我已经读过这个 Asynchronous PHP calls?但我不确定我是否理解。
编辑 2:这是按要求对流程的概述:
- 第 1 步:用户打开表单并填写 2 个字段(一些文本和一个链接)
- 第 2 步:用户提交表单
- 第 3 步:PHP 在 MySQL 数据库中插入帖子
- 第 4 步:PHP 搜索该链接的图像(抓取网络,需要几秒钟)并使用数据库插入中最后一个 ID 的名称保存该图像。如果最后一个 ID 是 75,图像将保存为“img_75”。
- 第 5 步:PHP 加载“您已成功发布链接”
我想要的是第 3 步之后的第 5 步,同时第 4 步正在运行。我实际上不需要第 4 步的响应。只要它在后台运行我就很高兴:)
解决方案: 我已按照@shadyyx 的建议进行操作。一个简单的 AJAX 调用。我真的希望有一个替代方案,但显然 php 或任何其他服务器端语言都不能处理异步调用。
最佳答案
我会在两步 AJAX 调用中执行此操作。
它应该是这样的:
- 用户打开表单并填写数据
- 用户点击提交按钮 - 一个 AJAX 调用被发送到服务器
- 一个新条目被写入数据库,最后一个 ID 作为响应返回给 JS
- 您向用户显示表单已提交的消息
- 并调用将抓取所需 URL 的新 AJAX 请求,使用您从第一个 AJAX 响应中获得的 ID 下载并保存图像...
清楚了吗?简单的?我猜是……
关于php - 异步PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10702800/