【发布时间】:2017-03-03 09:24:01
【问题描述】:
我正在寻找一种在 2 个函数之间获得回声(或其他任何东西)的方法,第一个函数是通过 Ajax 调用的。
这是我正在做的事情:
我通过 Ajax 将视频上传到临时存储它的服务器。 然后将视频传递给一个私有函数,该函数通过 API 将其发送到 youtube,然后在服务器上取消设置视频。
我的问题:在这两个函数之间,有没有办法从 PHP 脚本中获取一些可以由客户端处理的内容以通知他进度?
我试过了:
- 发送JSON
- 在 Ajax 调用时更新由 JS 检查的会话
- flush() 和 ob_flush()
但总是在第二个函数的末尾返回数据(当我不再需要任何东西时),好像在调用和之后的所有内容时,PHP 无法说什么
我想要:
function upload()
{
//uploading
if(ok)
{
//echoing something there (the main goal)
goYoutube();
}
}
private function goYoutube() {
//etc...
}
而我所拥有的是:
function upload()
{
//uploading
if(ok)
{
goYoutube();
}
}
private function goYoutube()
{
//etc...
//echoing something there (the bad bad bad useless thing)
}
它与 CodeIgniter 一起使用,我没有在服务器上使用。
我不需要代码,只是一个想法(将不胜感激)
当然,像“不要浪费你的时间家伙,这不能完成”这样的事情是可以的!
谢谢。
【问题讨论】:
-
您可以从 JS 发送单独的请求来请求当前操作的状态。然后,您将需要获得此状态的方法。或者您也可以考虑使用 SSE 或 WebSocket 并将进度直接发送给客户端。
-
@AntonM。是的,我发现在长脚本期间的中间刷新令人沮丧...... - 从 PHP 本身的角度来看,它很复杂,然后你也必须处理 Web 服务器......最简单的可能是定期 ajax 调用一些生成的 ID 的脚本,并且在很长一段时间内脚本将进度信息存储到 sessionvar 中,将由 ajax 调用的脚本返回。
-
Thx,我实际上已经有上传本身的 xhr 进度(不是那么精确,但好吧......没关系),我想要得到的是 PHP 运行“ goyoutube" 功能(或结束上传);我明白了,但是当一切都完成时。