採用CURL庫在PHP程式之間傳遞陣列

2021-05-26 20:17:59 字數 2535 閱讀 1912

最近在工作中遇到乙個問題: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函式沒有足夠的引數來使用,比 如當你想構建乙...