投稿文字列を介してCSVからURLに一連のデータを送信する必要があります。これを達成するには、次のことを行っています。
<?php
$CSVleadfile = "leads.csv";
//lead file information lookup
$f = fopen($CSVleadfile, "r");
//begin while loop
while($row = fgetcsv($f)) {
$contactId = $row[1];
$createDate = $row[2];
$callerAni = $row[3];
$tfn = $row[4];
$firstname = $row[5];
$lastname = $row[6];
$address1 = $row[7];
$address2 = $row[8];
$city = $row[9];
$state = $row[10];
$zip = $row[11];
$homephone = $row[12];
$email = $row[13];
// load data for posting array
$post_data = array(
"Prs_First" => "$firstname",
"Prs_Middle" => "",
"Prs_Last" => "$lastname",
"Prs_Email" => "$email",
"Prs_Phone1" => "$homephone",
"Prs_Phone2" => "$callerAni",
"Prs_Address1" => "$address1",
"Prs_Address2" => "$address2",
"Prs_City" => "$city",
"Prs_State" => "$state",
"Prs_Zip" => "$zip",
"InitialContactDate" => "$createDate",
);
//traverse array and prepare data for posting (key1=value1)
unset($post_items);
foreach ($post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the string to be posted using implode()
$post_string = implode ('&', $post_items);
//create cURL connection
$curl_connection = curl_init('https://www.whatever.com');
//echo to make sure string is formed correctly
echo "Submitting: <br />";
echo "$post_string";
echo "<br />";
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform the request
$result = curl_exec($curl_connection);
$result = simplexml_load_string($result);
$result = json_encode($result);
$result = json_decode($result, true);
echo "<br />";
if (isset($result)){
echo "<pre>";
print_r($result);
echo "$result";
print_r($result[0]);
echo "$result[0]";
echo "</pre>";
} else {
echo "it's still broken.";
$result = "Still TFB";
}
echo "<br />";
unset($curl_connection);
unset($result);
unset($post_string);
}
//end while loop
fclose($f);
?>
今、私が抱えている問題は 2 つあります。最初に、$result または print_r をエコーしようとしても、最後にそのエコーからの結果が表示されません。2番目の問題は、これには永遠にかかることです。送信に 30 秒かかるような話をしているのですが、何かの理由でタイムアウトになっているのではないでしょうか? 以前にこのような while ループ内で curl を使用したことがないので、何らかの追加のクリーンアップを行う必要があるかどうか、または curl からトラブルシューティングするための詳細情報をエコー バックする方法があるかどうかはわかりません。私は頭がおかしいと感じ始めています.Halp!
編集:
わかりましたので、提案されているように、ループの外にcurl関数を投げました:
<?php
$CSVleadfile = "testing.csv";
//lead file information lookup
$f = fopen($CSVleadfile, "r");
while ($row = fgetcsv($f)) {
$contactId = $row[1];
$createDate = $row[2];
$callerAni = $row[3];
$tfn = $row[4];
$firstname = $row[5];
$lastname = $row[6];
$address1 = $row[7];
$address2 = $row[8];
$city = $row[9];
$state = $row[10];
$zip = $row[11];
$homephone = $row[12];
$email = $row[13];
// load data for posting array
$post_data = array(
"that" => "$junk",
);
//traverse array and prepare data for posting (key1=value1)
foreach ($post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the string to be posted using implode()
$post_string = implode('&', $post_items);
//perform the request
executeCurl();
}
//outside loop curl function
function executeCurl() {
//create cURL connection
$curl_connection = curl_init('https://www.whatever.com');
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
$result = curl_exec($curl_connection);
$result = simplexml_load_string($result);
echo "<br />";
if (isset($result)) {
var_dump($result);
die;
} else {
echo "it's still broken.";
$result = "Still TFB";
}
echo "<br />";
file_put_contents("./Results.txt", $results, FILE_APPEND | LOCK_EX);
}
fclose($f);
?>
私はそこからjsonの奇妙さを取り除きました...正直に言って、なぜそこにそれを投げたのか思い出せません。フォーマットされている可能性はかなりありますが、どちらにしても私が期待している結果は次のようなものです:
<string xmlns="http://www.whatever.com">11940576</string>
そして、それは私がそのテキストファイルに記録したいものです:Dただし、動作に変更はありません:(私のvar_dumpはbool(false)になります