2012-03-15 35 views
2

私は妄想的なクライアントを持つプロジェクトを持っています...同時に200人以上の人が同時にサイトを使用しているなら、彼はサイトがクラッシュするかもしれないと心配しています。同時ファイル書き込みPHP

私のスクリプトはデータを収集するように見えますか?または、ファイルにユーザーにエラーが表示されますか?

<?php 
if($_POST['name'] && $_POST['email']) { 
    //file name var 
    $fileName = "mycsvfile.csv"; 

    //grab from form 
    $name = $_POST['name']; 
    $email = $_POST['email']; 

    //date 
    date_default_timezone_set("America/Los_Angeles"); 
    $today = date("F j, Y, g:i a"); 

    //set the data we need into an array 
    $list = array (
     array($today, $name, $email) 
    ); 

    // waiting until file will be locked for writing (1000 milliseconds as timeout) 
    if ($fp = fopen($fileName, 'a')) { 
     $startTime = microtime(); 
     do { 
     $canWrite = flock($fp, LOCK_EX); 
     // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load 
     if(!$canWrite) usleep(round(rand(0, 100)*1000)); 
     } while ((!$canWrite)and((microtime()-$startTime) < 1000)); 

     //file was locked so now we can store information 
     if ($canWrite) { 
     foreach ($list as $fields) { 
      fputcsv($fp, $fields); 
     } 
     } 
     fclose($fp); 
    } 

    //Send them somewhere... 
    header('Location: http://alandfarfaraway') ; 

}else{ 
    echo "There was an error with your name and email address."; 
} 
?> 
+7

なぜMySQLデータベースを使用しないのですか?簡単かつ効率的に200件の同時リクエストを処理できます。 –

+3

この方法でファイルに書き込むと、実際にはエラーが発生しやすくなります。あなたは、通常のデータベースを使用できない場合、SQLiteなどの何かを検討するかもしれません。それは、予期されるトラフィックに関する情報と、実際の目標が何であるかという情報がなくても、言うことは難しいです。 – Cfreak

+0

また、単純なままにしたい場合は、SQLiteを使用してください。すべて:データベースを使用してデータを保存する – KingCrunch

答えて

1

データを保存するためにMySQLなどのデータベースを使用します。はるかに高い負荷を処理します。

http://php.net/manual/en/book.mysql.php

+0

私はDBに書き込む方法を知っていますが、私は通常そのルートに行きます。私はちょうど新しいものを試していた。私はその道を行く。すべての素晴らしい返信をありがとう。 – PaulELI

関連する問題