मैं PHP, के साथ पूंछ कमांड जैसे आंदोलन करना चाहता हूं लेकिन फ़ाइल में कैसे संलग्न हो सकता है?PHP में फ़ाइल लिखने के लिए कैसे करें?
उत्तर
के उपयोग पर विचार करना मुझे विश्वास नहीं है वहाँ यह करने के लिए कुछ जादुई तरीका है कि चाहते हैं। आपको बस फ़ाइल आकार को लगातार मतदान करना होगा और किसी नए डेटा को आउटपुट करना होगा। यह वास्तव में काफी आसान है, और देखने के लिए एकमात्र वास्तविक चीज़ यह है कि फाइल आकार और अन्य स्टेट डेटा php में कैश किया जाता है। इसका समाधान किसी भी डेटा को आउटपुट करने से पहले clearstatcache()
पर कॉल करना है।
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");
हाय, आपका समाधान एक जलती हुई प्रतीत हो रहा है बहुत सी सीपीयू (+ -40% मेरी टेस्ट कॉन्फ़िगरेशन पर)। फ़ोल्डर्स देखने के एक और अधिक कुशल तरीके से कोई संकेतक हैं? – Coyote
'नींद (100)' एक सेकंड के 100 मिलियन के लिए, या 0.0001 सेकंड के लिए सो रहा है। कम CPU उपयोग के लिए इसे 'नींद (10000) '(0.01s) तक बढ़ाएं जब तक आपको अत्यधिक कम विलंबता की आवश्यकता न हो। जब आप उस पर नज़र डालते हैं तो आप कुछ हद तक ताजा (2000000) 'या 'नींद (2)' (2 एस) सोते हैं। – ReactiveRaven
मैंने इस कोड को आजमाया, लेकिन कोई सफलता नहीं ... ब्राउज़र लोड हो रहा है ... और कोई गूंज नहीं .. – 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);
और शायद आप stream_get_line
के बजाय मतदान फ़ाइल आकार आप नियमित रूप से जाँच फ़ाइल संशोधन समय:: filemtime
के लिए एसएसई है, दोनों को सतह के नीचे एक स्टेट() कॉल की आवश्यकता है, इसलिए यह वास्तव में कोई फर्क नहीं पड़ता। –
चेकआउट php-tail on Google code
यहां एक त्वरित नमूना, कि किसी भी त्रुटि हैंडलिंग शामिल नहीं करता है। यह PHP और जावास्क्रिप्ट के साथ एक 2 फ़ाइल कार्यान्वयन है और यह मेरे परीक्षण में बहुत कम ओवरहेड है।
यह भी एक ग्रेप कीवर्ड (ffmpeg के लिए उपयोगी है जो फ्रेम दर आदि हर दूसरे बाहर थूक) के साथ छानने का समर्थन करता है।
$handle = popen("tail -f /var/log/your_file.log 2>&1", 'r');
while(!feof($handle)) {
$buffer = fgets($handle);
echo "$buffer\n";
flush();
}
pclose($handle);
यह दुर्घटना अपाचे सर्वर .. यह केवल मेरे लिए करो? – dctremblay
सुराग के लिए अपने त्रुटि लॉग की जांच करें, लेकिन यह आपकी अपाचे प्रक्रिया को क्रैश नहीं करनी चाहिए। –
नीचे जो मैंने ऊपर से अनुकूलित किया है। इसे अजाक्स कॉल के साथ समय-समय पर कॉल करें और अपने 'धारक' (टेक्स्टरेरा) में शामिल हों ... उम्मीद है कि यह मदद करता है ... आप सभी को धन्यवाद जो स्टैक ओवरफ्लो और ऐसे अन्य मंचों में योगदान करते हैं!
/* 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. PHP में DOMDocument लिखने के लिए स्टैंडअलोन = हाँ कैसे करें?
- 2. PHP फ़ाइल के अंदर टैब अक्षरों को लिखने के लिए?
- 3. चींटी में फ़ाइल में एक चर लिखने के लिए कैसे?
- 4. सी # में अस्थायी फ़ाइल (लिखने के लिए) कैसे बनाएं?
- 5. पीएचपी में यूआरएल पुनः लिखने के लिए कैसे करें?
- 6. PHP वेब सेवा लिखने के लिए फ्रेमवर्क
- 7. फ़ाइल को बनाने और लिखने के लिए
- 8. एक्सेल फ़ाइल लिखने के लिए लाइब्रेरी
- 9. फोनगैप - एंड्रॉइड के लिए फ़ाइल में लिखने में असमर्थ
- 10. फ़ाइल पढ़ने और लिखने के समानांतर कैसे करें
- 11. PHP में फ़ाइल एक्सटेंशन कैसे प्राप्त करें?
- 12. क्लोजर 1.3 में, फ़ाइल को पढ़ने और लिखने के लिए
- 13. PHP - फ़ाइल डाउनलोड करने के लिए कैसे मजबूर करें?
- 14. फ्लैट फ़ाइल में लॉग लिखने के लिए LOCK कैसे काम करता है?
- 15. PHP में ऑटोफिल्टर के साथ एक्सेल फ़ाइल कैसे उत्पन्न करें?
- 16. पावरहेल में त्रुटि स्ट्रीम लिखने के लिए लिखने में त्रुटि
- 17. PHP में एक फ़ाइल लिखने में सफल होने पर मैं कैसे परीक्षण कर सकता हूं?
- 18. .htaccess PHP स्क्रिप्ट के लिए छवि फ़ाइल को फिर से लिखने
- 19. php: फ़ाइल के रूप में परिवर्तनीय सामग्री डाउनलोड करें
- 20. C++ कैसे लिखने के लिए/यूनिकोड में ofstream पढ़ने/UTF8
- 21. कैसे एक HTTP अनुरोध लिखने के लिए
- 22. फ़ाइल को डिस्क लिखने के बिना PHP क्लास ZipArchive का उपयोग करके एक ज़िप फ़ाइल बनाएं?
- 23. पावरहेल लिखने के लिए कैसे करें मेरे cmdlets
- 24. लिखने के लिए नकली कॉल()
- 25. PHP: आप इसे लिखने के लिए क्या उपयोग करते हैं?
- 26. क्या posix_fadvise() अनुक्रमिक फ़ाइल लिखने के लिए तर्क देता है?
- 27. Apache + PHP को फ़ाइल को लिखने के लिए निष्पादन अनुमतियों की आवश्यकता क्यों है?
- 28. PHP में फ़ाइल में लिखने के बाद मुझे 'fclose` क्यों चाहिए?
- 29. PHP से फ़ाइल में सरणी में पाठ कैसे प्राप्त करें
- 30. एकाधिक फ़ाइलों को पढ़ने और लिखने के लिए कैसे?
http://code.google.com/p/php-tail/ – Peeter
Packagist पर उपलब्ध: https://packagist.org/packages/icyapril/tail – mjsa