最近在工作中遇到乙個問題: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程式源**:
view plain
print?
<?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
);
} elseif(
'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秒鐘後自動結束執行。if(
b.php程式源**:
view plain
print?
<?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函式沒有足夠的引數來使用,比 如當你想構建乙...