いくつかのガイダンスが必要な複雑な問題があります。私たちは、世界中の工場が倫理的かどうかを認定する非営利団体です。世界中の認定工場の名前と連絡先情報を返す WSDL Web サービスがあります。パラメータとして 3 文字の文字列を受け入れます (つまりBGD
、バングラデシュ、CHN
中国、COL
コロンビア)。
ユーザーが国を選択して工場のリストを表示できるように、HTML 選択を含むページを設計しました。認証済みの工場がある国のみをこのリストに入れ、そうでない国は除外する、ある種のフィルターを作成できるようにしたいと考えています。
これを実行する次のコードを作成しましたが、非常に遅く、サイトが本当に行き詰まります。(簡潔にするために、最初の数カ国のみを含めました。完全な配列には、約 210 の国が含まれます。また、このfactCountByCountryID()
関数は、指定された国に現在ある工場の数を返します。
<?php
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient("http://apollov-dev.worlddata.com:8080/WrapSystem/services/FactoriesWS?wsdl",array("trace" => 1, "exceptions" => 0));
$countryList=array("AFG"=>"Afghanistan","ALA"=>"Aland Islands","ALB"=>"Albania","DZA"=>"Algeria","ASM"=>"American Samoa","AND"=>"Andorra","AGO"=>"Angola","AIA"=>"Anguilla","ATG"=>"Antigua and Barbuda","ARG"=>"Argentina","ARM"=>"Armenia","ABW"=>"Aruba","AUS"=>"Australia","AUT"=>"Austria","AZE"=>"Azerbaijan","BHS"=>"Bahamas","BHR"=>"Bahrain","BGD"=>"Bangladesh","BRB"=>"Barbados","BLR"=>"Belarus","BEL"=>"Belgium","BLZ"=>"Belize","BEN"=>"Benin","BMU"=>"Bermuda","BTN"=>"Bhutan","BOL"=>"Bolivia","BIH"=>"Bosnia and Herzegovina","BWA"=>"Botswana","BRA"=>"Brazil","VGB"=>"British Virgin Islands","BRN"=>"Brunei Darussalam","BGR"=>"Bulgaria","BFA"=>"Burkina Faso","BDI"=>"Burundi","KHM"=>"Cambodia","CMR"=>"Cameroon","CAN"=>"Canada","CPV"=>"Cape Verde","CYM"=>"Cayman Islands");
foreach($countryList as $code=>$country)
{
$params->countryCd=$code;
$number=$client->factCountByCountryID($params);
$factval=$number->factCountByCountryIDReturn;
if($factval!=0)
{
$countriesWithFactories["$code"]="$country";
}
else continue;
}
?>