Voglio fare movimento come il comando tail con PHP, ma come si può guardare aggiungere al file?Come guardare un file scrivere in PHP?
risposta
Io non credo che ci sia un modo magico per farlo. Devi solo eseguire il polling continuo delle dimensioni del file e generare nuovi dati. Questo è in realtà abbastanza semplice, e l'unica cosa reale a cui prestare attenzione è che le dimensioni dei file e gli altri dati delle statistiche sono memorizzati nella cache di PHP. La soluzione a questo è chiamare clearstatcache()
prima di emettere qualsiasi dato.
Ecco un rapido esempio, che non include la gestione degli errori:
function follow($file)
{
$size = 0;
while (true) {
clearstatcache();
$currentSize = filesize($file);
if ($size == $currentSize) {
usleep(100);
continue;
}
$fh = fopen($file, "r");
fseek($fh, $size);
while ($d = fgets($fh)) {
echo $d;
}
fclose($fh);
$size = $currentSize;
}
}
follow("file.txt");
Ciao, La soluzione sembra essere la masterizzazione di un sacco di CPU (+ -40% sulla mia configurazione di prova). Ci sono indicazioni su un modo più efficiente di guardare le cartelle? – Coyote
'usleep (100)' sta dormendo per 100 milionesimi di secondo o 0.0001 secondi. Aumentalo a 'usleep (10000)' (0.01s) per un utilizzo inferiore della CPU, a meno che tu non abbia bisogno di una latenza estremamente bassa. 'usleep (2000000)' o 'sleep (2)' (2s) per qualcosa che vuoi essere ragionevolmente fresco quando lo guardi. – ReactiveRaven
Ho provato questo codice, ma non ha avuto successo ... il browser continua a caricare ... e non riecheggia .. – ihtus
$handler = fopen('somefile.txt', 'r');
// move you at the end of file
fseek($handler, filesize());
// move you at the begining of file
fseek($handler, 0);
E probabilmente si vuole prendere in considerazione l'uso di stream_get_line
Invece di polling spazio si regolare controllando il file ora di modifica: filemtime
Entrambi richiedono una chiamata a stat() sotto la superficie, quindi non importa. –
Checkout php-tail on Google code. Si tratta di un'implementazione di 2 file con PHP e Javascript e ha un sovraccarico molto piccolo nei miei test.
Supporta anche il filtraggio con una parola chiave grep (utile per ffmpeg che emette frame rate ecc. Ogni secondo).
$handle = popen("tail -f /var/log/your_file.log 2>&1", 'r');
while(!feof($handle)) {
$buffer = fgets($handle);
echo "$buffer\n";
flush();
}
pclose($handle);
Arresta il server Apache. Fai questo solo per me? – dctremblay
Controlla i log degli errori per trovare indizi, ma questo non dovrebbe rovinare il tuo processo di apache. –
Di seguito è ciò che ho adattato dall'alto. Chiamalo periodicamente con una chiamata ajax e aggiungi al tuo 'titolare' (area di testo) ... Spero che questo aiuti ... grazie a tutti voi che contribuite allo stackoverflow e ad altri forum di questo tipo!
/* Used by the programming module to output debug.txt */
session_start();
$_SESSION['tailSize'] = filesize("./debugLog.txt");
if($_SESSION['tailPrevSize'] == '' || $_SESSION['tailPrevSize'] > $_SESSION['tailSize'])
{
$_SESSION['tailPrevSize'] = $_SESSION['tailSize'];
}
$tailDiff = $_SESSION['tailSize'] - $_SESSION['tailPrevSize'];
$_SESSION['tailPrevSize'] = $_SESSION['tailSize'];
/* Include your own security checks (valid user, etc) if required here */
if(!$valid_user) {
echo "Invalid system mode for this page.";
}
$handle = popen("tail -c ".$tailDiff." ./debugLog.txt 2>&1", 'r');
while(!feof($handle)) {
$buffer = fgets($handle);
echo "$buffer";
flush();
}
pclose($handle);
- 1. Come scrivere in un file in PHP?
- 2. Come scrivere php + html in un file più bello?
- 3. Come scrivere un oggetto semplice in PHP
- 4. Scrivere una virgola in un file CSV con PHP
- 5. Scrivere e leggere l'oggetto php in un file di testo?
- 6. Come scrivere nel file di registro degli errori in PHP
- 7. Ho un png codificato in base64, come posso scrivere l'immagine in un file in PHP?
- 8. Come scrivere in sicurezza su un file?
- 9. Come scrivere ArrayList in un file csv
- 10. FFmpeg Come scrivere video in un file
- 11. OCaml Come scrivere in un file?
- 12. Come scrivere un file Json in C#?
- 13. Python come scrivere in un file binario?
- 14. Come scrivere interi in un file
- 15. Come scrivere su un file in Kotlin?
- 16. Come posso scrivere i dati in un excel utilizzando PHP
- 17. PHP leggere e scrivere JSON da file
- 18. Come scrivere un operatore ternario PHP
- 19. Come posso "guardare" un file per la modifica/modifica?
- 20. PHP per scrivere caratteri di tabulazione all'interno di un file?
- 21. scrivere un XSSFWorkbook in un file zip
- 22. Come scrivere il percorso in php fopen?
- 23. scrivere in un file in Perl
- 24. PHP - Come scrivere la risorsa immagine sul file
- 25. Scrivere in un file CSV in Node.js
- 26. Come scrivere un file da un ArrayBuffer in JS
- 27. Come scrivere un oggetto S3 in un file?
- 28. Come scrivere un flusso su file?
- 29. Guardare $ locationProvider in Angular.js
- 30. Come scrivere un file funzionale "scanner"
http://code.google.com/p/php-tail/ – Peeter
Disponibile su Packagist: https://packagist.org/packages/icyapril/tail – mjsa