Dosyaya PHP yazma

6 Cevap php

Aşağıda benim oyun haritayı güncellenen bu yüzden kolayca benim veritabanını güncellemek SQL koduna bir harita dizisi "çevirmek" için kullanıyorum bazı kodudur. Eğer ekrana SQL kodunu yazdırır görebileceğiniz gibi ben de kopyalayabilir ve yapıştırabilirsiniz.

Benim haritalar büyük olacaktır gibi nedeniyle kitle çıktı tarayıcıyı çökme gibi bu verimsiz olacak, bu yüzden yerine üzerine baskı, bir. Txt dosyası oluşturmak ve bu verileri tüm yazmak yapmak mümkün olup olmadığını yerine ben merak ediyorum Ekran?

<?php
if (isset($_POST['code'])){
$map = $_POST['code'];
$map = preg_replace("/,\\s*}/i", "}", $map);
$map = str_replace("{", "[", $map);
$map = str_replace("}", "]", $map);
$map = json_decode('[' . $map . ']');

$arrayCount1 = 0;
$arrayCount2 = -1;

$H = sprintf('%05d', 00000);
$V = sprintf('%05d', 00000);
$id = 1;

echo "INSERT INTO `map` (`id`, `horizontal`, `verticle`, `image`) VALUES" . "<br />";

for ($count1 = 0; $count1 < sizeof($map[0]); $count1++){
$arrayCount2++;
$arrayCount1 = 0;
$V = sprintf('%05d', $V + 1);
$H = sprintf('%05d', 00000);

for ($count2 = 0; $count2 < sizeof($map); $count2++){
echo "(" . $id . ", '" . $H . "', '" . $V . "', '" . $map[$arrayCount1][$arrayCount2] . "')," . "<br />";
$arrayCount1++;
$id++;
$H = sprintf('%05d', $H + 1);
}
}
}
?>

6 Cevap

Bu oldukça basit olmalıdır. Eklemek

// second parameter 'a' stands for APPEND
$f = fopen('/path/to/the/file/you/want/to/write/to', 'a');

betiğin başına.

Eklemek

fclose($f);

Lütfen komut fo sonuna kadar temiz (kolları otomatik sonlandırma komut kapalı olması bile iyi pratice) dosya tanıtıcı kapatmak için.

Ve değişiklik tüm echo 's ve print s

fwrite($f, '<<your string>>');

EDIT:

Veri amnount gerçekten büyük alırsa bu şekilde bile bir compression stream wrapper kullanarak anında verileri sıkıştırabilir.

Daha basit bir yaklaşım var:

ob_start();
# Your code here ...
file_put_contents('yourfile.txt', ob_get_clean());

Bu düzenli aralıklarla yazmaya veya farklı komut ile planladığınız bir şey varsa,) (sürüsünü kullanarak bakmak dosyayı kilitlemek için ve veri bozulmalarını engeller.

    $fp = fopen("/tmp/lock.txt", "w+");

if (flock($fp, LOCK_EX)) { // do an exclusive lock
    fwrite($fp, "Write something here\n");
    flock($fp, LOCK_UN); // release the lock
} else {
    echo "Couldn't lock the file !";
}

fclose($fp);
$str = <<<your string comes here>>>
if( $fh = @fopen( "myfile.txt", "a+" ) ) {
    		fputs( $fh, $str, strlen($str) );
    		fclose( $fh );
}

Bu yapmalıyım ...

tüm satırları yazmak ve daha sonra istemciye dosyayı gönderin.

this ayrıntılı talimatlar için yazı kontrol

+ Benim 2 sent:

Çoğu hızlı ekler binlerce performans daha toplu dosyaları yükleyebilirsiniz gibi, veritabanı sunucuları kitle veri yükleme özelliklerini kontrol edebilir.