私は妄想的なクライアントを持つプロジェクトを持っています...同時に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.";
}
?>
なぜMySQLデータベースを使用しないのですか?簡単かつ効率的に200件の同時リクエストを処理できます。 –
この方法でファイルに書き込むと、実際にはエラーが発生しやすくなります。あなたは、通常のデータベースを使用できない場合、SQLiteなどの何かを検討するかもしれません。それは、予期されるトラフィックに関する情報と、実際の目標が何であるかという情報がなくても、言うことは難しいです。 – Cfreak
また、単純なままにしたい場合は、SQLiteを使用してください。すべて:データベースを使用してデータを保存する – KingCrunch