我有一家在線商店,我使用在線會計軟件手動發(fā)布訂單。在線會計軟件有一個非常大的api,我想在客戶下訂單時自動發(fā)送訂單。一旦訂單完成,客戶就會進入成功頁面,即 successpage.php在此頁面中,我有以下內(nèi)容:$sendOrder = file_get_contents("https://myonlinestore.com/sendorder.php?order=1234");在 sendorder.php 上,我收到$_GET參數(shù)“order”,即訂單號,我處理幾個 SQL 請求以從數(shù)據(jù)庫中檢索訂單數(shù)據(jù)。獲得所有這些數(shù)據(jù)后,我會啟動一個 CURL 帖子,以使用會計系統(tǒng)的 API 發(fā)送數(shù)據(jù)。這是我的代碼的簡化版本,其中包含基本部分:$orderNum = htmlspecialchars($_GET["order"]) // SENT OVER FILE_GET_CONTENTS// bOf process SQL here and get order info stored in various variables// EXECUTE SQL HERE// eOf process SQL here and get order info stored in various variables$invoice = array('customer_id' => $custaccount,'estimate_number' => $orderRef,'reference_number' => $orderNum// MANY OTHER VARIABLES ENTERED HERE, BUT LEFT OUT TO KEEP THINGS SHORT);$jsonInvoice = json_encode($invoice);$url = 'https://ACCOUTINGAPP.com/api/v2/orders';$data = array('authtoken' => '***********','JSONString' => $jsonInvoice,'company_id' => '***********' );$ch = curl_init($url);curl_setopt($ch, CURLOPT_VERBOSE, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ch, CURLOPT_POST, TRUE);curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded") );$response = false;$response = curl_exec($ch);curl_close($ch);// TEST RESPONSEif($response !== false) {var_dump($response);}else{echo "oops error hehehe";}我主要關(guān)心:我希望用戶在進入successpage.php 后立即關(guān)閉選項卡或頁面。但我想確保 successpage.php 的 $sendOrder = file_get_contents() 以及它在 sendorder.php 上執(zhí)行的代碼繼續(xù)運行,無論用戶連接如何。所以我的問題是,我會放在哪里:ignore_user_abort(TRUE);另外,我應(yīng)該使用輸出緩沖嗎?我只是在問,因為我在其他網(wǎng)站上讀到了一篇關(guān)于這個的帖子,它建議了這個。最后,我應(yīng)該包括:set_time_limit(0);
1 回答
Cats萌萌
TA貢獻1805條經(jīng)驗 獲得超9個贊
ignore_user_abort(TRUE);盡快打電話。而且您不需要輸出緩沖,因為一旦關(guān)閉瀏覽器選項卡,就沒有人會看到您的輸出,因此您只需要確保您的腳本已經(jīng)在執(zhí)行任何操作即可。
- 1 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報
0/150
提交
取消
