Bir test yapmak isterdim. Benim sorum, hem okuma hem de yazma için dosya açmak mümkün mü, bu yüzden eğer bir dosya üzerinde daha fazla okuma-yazma işlemine sahip olsam, okuma durumunu kapatmam gerekmiyor, okuma, yazma durumu için aç, yazma ve böylece bir döngüde.Okuma durumunu kapatmadan dosyaya yazmak mümkün mü? PHP
$filename = "test.txt";
$handle = fopen($filename, "rwb");
fseek($handle , 15360);
$contents = fread($handle, 51200);
$start = microtime (true);
fseek($handle , 1);
fwrite ($handle , $contents);
fclose($handle);
Bu test çalışmıyor. Bekledim, verileri okuyacağım ve fseek işaretçisini dosyaya 1 ya da 0 pozisyonuna başlayacağım ve sonra veriyi yazacağım. Ancak bu eylem, bir sonucu için 0 (int) bayt yazılan bir sonuçla başarısız oldu. Dolayısıyla benim sorum şu, bunu yapmak mümkün mü? Ya da ilk önce dosyayı okumak için kapatmam gerek?
ile ilgili alt soru - daha fazla kullanıcının farklı konumlardan eşzamanlı olarak dosyaları okuyabilir veya yazabilir. Bu, veritabanı okuma/yazma işlemlerini simüle etmelidir. Mysql'in nasıl çalıştığını biliyorsunuz - daha fazla kullanıcı aynı tabloyu yazabilir - her zaman aynı dosya. Bunun C/C++ 'da sorun olmadığını biliyorum, ancak php'de yapmak mümkün mü?
ile kilidi kaydı yaptırmanız gerekmektedir os bağlıdır ve dosyayı açtı, ancak birden fazla kullanıcı genellikle nasıl Aynı dosyayı açabilir, ancak bu kullanıcıların her birinin ne yaptığına bağlı olarak sonuçlar tanımlanmayacaktır. İşlem sırasına göre bir garanti yok. fread'in() başarılı olduğuna emin misin? fwrite hataya boolean FALSE döndürür. 0 döndürüyor, 0 bayt yazıyor demektir, yani $ içeriği boş demektir. –
$ içeriğini görüntüleyebilirim ve evet, veriler başarıyla okunuyor. Operasyonların sırası, kullanıcı kimliği, örn. 09 no'lu kullanıcı 9 * 1024. bayttan başlayarak 1024bayt yazacak, 100 numaralı kullanıcı 100 * 1024 bayttan başlayarak 1024 bayt yazacaktır. –