最近在工作中遇到乙個問題:a.php程式需要將接收到的資料同時寫到「線上執行的正式資料庫」和「進行開發除錯的測試資料庫」。而測試資料庫可能經常會面臨對錶結構、字段、配置資訊做調整等問題,很不穩定,發生錯誤的概率很高,如果用a.php程式同時寫「正式資料庫」和「測試資料庫」,勢必影響到線上執行的正式服務。
於是,我想到用php curl擴充套件庫將生成的$data陣列post傳遞乙份給b.php程式,然後a.php程式繼續往下執行寫「正式資料庫」的**。a.php程式將$data陣列傳遞給b.php程式就完事了,至於b.php如何處理,就不關a.php的事了,b.php程式即使寫「測試資料庫」失敗,也不會對a.php程式造成影響。
按照這種思路,我寫了a.php和b.php的**:
a.php程式源**:
<?php
$data["username"]="張宴";
$data["password"]="不知道";
$data["ip"]="192.168.0.18";
//register_shutdown_function("post_data", $data);
//function post_data($data)
////curl類
//是否顯示頭部資訊
curl_setopt($ch, curlopt_header, false);
//curl_setopt($ch, curlopt_returntransfer, true);
if ($username != '')
$method = strtolower($method);
if ('post' == $method)
$fields = implode('&',$sets);
}curl_setopt($ch, curlopt_postfields, $fields);
}else if ('put' == $method)
//curl_setopt($ch, curlopt_progress, true);
//curl_setopt($ch, curlopt_verbose, true);
//curl_setopt($ch, curlopt_mute, false);
curl_setopt($ch, curlopt_timeout, 3);//設定curl超時秒數,例如將資訊post出去3秒鐘後自動結束執行。
b.php程式源**:
<?php
ignore_user_abort();//連線中斷後(例如關閉瀏覽器)仍然繼續執行以下的指令碼直到處理完畢。
set_time_limit(0);
$get_data = file_get_contents("php://input");
$explodedata = explode("&", $get_data);
foreach ($explodedata as $key => $value)//還原陣列
//現在$data陣列已經和a.php中的一樣了,接下來,就可以根據自己的需要對$data陣列進行操作了。
//......
?>
備註:這兩段**需要php curl擴充套件庫的支援,檢視phpinfo(),如果curl support enabled則表示支援curl庫。
1、windows下的php開啟curl庫支援:
開啟php.ini,將extension=php_curl.dll前的;號去掉。
2、linux下的php開啟curl庫支援:
編譯php時在./configure後加上 --with-curl
採用curl庫在PHP程式之間傳遞陣列
最近在工作中遇到乙個問題 a.php程式需要將接收到的資料同時寫到 線上執行的正式資料庫 和 進行開發除錯的測試資料庫 而測試資料庫可能經常會面臨對錶結構 字段 配置資訊做調整等問題,很不穩定,發生錯誤的概率很高,如果用a.php程式同時寫 正式資料庫 和 測試資料庫 勢必影響到線上執行的正式服務。...
採用curl庫在PHP程式之間傳遞陣列
最近在工作中遇到乙個問題 a.php程式需要將接收到的資料同時寫到 線上執行的正式資料庫 和 進行開發除錯的測試資料庫 而測試資料庫可能經常會面臨對錶結構 字段 配置資訊做調整等問題,很不穩定,發生錯誤的概率很高,如果用a.php程式同時寫 正式資料庫 和 測試資料庫 勢必影響到線上執行的正式服務。...
在PHP中使用Curl
摘要 在這篇文章中主要講解php curl庫的知識,並教你如何更好的使用php curl。簡介你可能在你的編寫php指令碼 中會遇到這樣的問 題 怎麼樣才能從其他站點獲取內容呢?這裡有幾個解決方式 最簡單的就是在php中使用fopen 函式,但是fopen函式沒有足夠的引數來使用,比 如當你想構建乙...