我正在创建一个照相亭应用程序,用户可以在其中将他们拍摄的照片分享到他们的 Facebook 帐户。大多数情况下,它运行良好。我正在使用 AJAX 发布到这个 PHP 页面:
$appID = "#####";
$appSecret = "#####";
$accessToken = $_POST['accessToken'];
$filePath = $_POST['imagePath'];
$message = $_POST['message'];
// Initialize the SDK
$facebook = new Facebook(array(
'appId' => $appID,
'secret' => $appSecret,
'fileUpload' => true,
'cookie' => true
));
$facebook->setAccessToken($accessToken);
// Upload the photo
$response = $facebook->api("/me/photos", "post", array(
'message' => $message,
'image' => '@' . $filePath
));
echo json_encode($response);
如果我在响应中从 Facebook 取回一个帖子 ID,我的 Javascript 会显示一条成功消息。如果我收到没有帖子 ID 的回复,则会显示错误消息。有时,无论是 Facebook 速度慢还是互联网中断或其他我无法控制的因素,对 Facebook 的请求都会继续处理,而我根本没有得到任何回复。
如果需要很长时间,我想在上传过程中创建某种“仍在工作...”消息,然后是“我们很抱歉,但您的照片无法上传。请刷新页面并再试一次”,如果时间太长。我知道我可以轻松地在 jQuery.ajax 请求上创建超时,但问题是(据我的理解)即使超时并且执行了错误回调,请求仍在服务器上进行。如果由于某种原因上传原始照片的时间超过了我的超时时间,那么当用户刷新页面并成功上传时,他们将有一个副本。
我对此提出了一些假设的解决方案,但不确定如何实施其中的任何一个。
1)在一定时间后取消上传过程服务器端(我相当确定这是不可能的)并显示错误 2)在上传之前检查重复的照片(似乎这不适用于一个非常缓慢的上传过程)
所以我只剩下希望超时过程永远不会结束的唯一解决方案。这让我觉得不可靠,可能会导致一些重复。同时,当我试图等待上传时,它总是比我耐心等待的时间长。
解决这个问题的任何想法?