あなたがファイルの終わりはなく、最初から行を読めば、それは仕事ができることを私に起こりました。私はhereからの助けを得て、それを行う方法を考え出し、ファイルの終わりから最後の行の始めまで後方を探し出す関数にコードの一部を組み込んだ。その機能付
function lineStart($file) {
$position = ftell($file);
while (fgetc($file) != "\n") {
fseek($file, --$position);
if ($position == 0) break;
}
return $position;
}
、あなたが繰り返し、最後の行の末尾には、その行の先頭にファイル位置で示される長さにファイルを切り詰める読むことができます。
$file = fopen('emails.csv', 'r+'); // open for read/write
fseek($file, -1, SEEK_END); // move to end of file
while (fstat($file)['size']) {
lineStart($file); // move to beginning of line
$line = fgetcsv($file);
$mail->parseTextandSendMail($line); // do your email thing
ftruncate($file, lineStart($file)); // truncate from beginning of line
}
fclose($file);
私は(に対処するためにはるかに容易になるようにデータベースはそう)、これは一般的に良いアイデアだと思うならば、私は知りませんが、私はちょうど達成するための方法があったかどうかを把握したかったですそれは私の限られたテストではうまくいくようです。
すべてのメールが送信されるので、ループを送信してからファイル全体を削除することはできません。 –
@ダゴン:それは簡単すぎます。 – AbraCadaver
私はデータベースが良い方法だと思う。 –