私のアプリケーションの 1 つで、ユーザーは CSV ファイル (| で区切られたフィールド) をアップロードできます。アップロード後、ファイルのすべてのコンテンツを一時テーブルに保存しています (現在のファイル データが含まれるように、新しいアップロードのたびにこのテーブルを切り捨てます)。その後、そのテーブルのすべての行を反復処理し、ビジネス ロジックに従ってデータベース操作を実行します。
次のコードはこれを示しています。
if(isset($_POST['btn_uploadcsv']))
{
$filename = $_FILES["csvupload"]["name"];
$uploads_dir = 'csvs'; //csv files...
$tmp_name = $_FILES["csvupload"]["tmp_name"];
$name = time();
move_uploaded_file($tmp_name, "$uploads_dir/$name");
$csvpath = "$uploads_dir/$name";
$row = 0;
$emptysql = "TRUNCATE TABLE `temp`";
$connector->query($emptysql);
if (($handle = fopen($csvpath, "r")) !== FALSE) {
$str_ins = "";
while (($data = fgetcsv($handle, 1000, "|")) !== FALSE) {
/*
* Here I am getting the column values to be store in the
* the table, using INSERT command
*/
unset($data);
}
fclose($handle);
}
/*Here I am selecting above stored data using SELECT statement */
for($j=0;$j<count($allrecords);$j++)
{
echo "In the loop";
/*If I use echo statement for debugging it is working fine*/
//set_time_limit(300);
/* I have tried this also but it is not working*/
if(!empty($allrecords[$j]['catid']))
{
// Here is my business logic which mailny deals with
// conditional DB operation
}
echo "Iteration done.";
/*If I use echo statement for debugging it is working fine*/
}
}
問題は、サーバーで aboe スクリプトを実行すると、サーバーのタイムアウト エラーが発生することです。しかし、ローカルホストで上記のスクリプトをテストすると、正常に動作しています。
また、コードで述べたように、echo
デバッグにステートメントを使用すると正常に動作し、それを削除すると接続タイムアウトの問題が発生し始めます。
set_time_limit(300)
、を試しset_time_limit(0)
ましたが、どれもうまくいかないようです。
上記の問題をどのように解決できますか。
-- 長い間ありがとうございました。
編集:
ファイルがサーバーにアップロードされていることを確認しました。