php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.01.2012, 23:00  
Erfahrener Benutzer
 
Registriert seit: 06.05.2011
Beiträge: 183
PHP-Kenntnisse:
Anfänger
DEdK4ever befindet sich auf einem aufstrebenden Ast
Standard Libevent -> Callback bei Dateiveränderung

Hallo! Weiss jemand, ob libevent auch mit lokalen Dateien anstatt mit Sockets betrieben werden kann?
Ich habe libevent installiert und es funktioniert prima mit Socketverbindungen.
Leider will es als valide Stream-Resource keine fopen-Resourcen annehmen. Geht das überhaupt?
Hier das 1. Beispiel aus dem Manual (welches übrigens funktioniert), statt mit STDIN mit fopen:
PHP-Code:
<?php
    error_reporting
(-1);
    
set_time_limit(0);
    
ob_implicit_flush();
    
    function 
logthis($txt) { echo time().": ".$txt."\n"; }
    
    function 
onedit($fd$events$arg) {
        
logthis("Datei verändert");
    }
    
// create base and event
    
logthis("event base new");
    
$base event_base_new();
    
logthis("event new");
    
$event event_new();
    
logthis("fopen");
    
// $fd = STDIN;
    
$fd fopen("/home/user/wwwlocal/data.txt","r+");
    
logthis("event set");
    
event_set($event,$fd,EV_READ|EV_PERSIST,"onedit",array($event,$base));
    
logthis("event base set");
    
event_base_set($event$base);
    
logthis("event add");
    
event_add($event);
    
logthis("event loop..");
    
event_base_loop($base);
    
logthis("event loop finished ?");
?>
ergibt:
Code:
[warn] Epoll ADD(1) on fd 6 failed.  Old events were 0; read change was 1 (add); write change was 0 (none): Operation not permitted
Habe ich die Parameter falsch gewählt, die falsche Funktion oder geht das gar nicht?
Würde mich freuen, wenn jemand weiter weiss.

Geändert von DEdK4ever (23.01.2012 um 23:20 Uhr).
DEdK4ever ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.01.2012, 13:41  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Ich würde behaupten, das ganze ist mit der PHP-Variante davon nicht realisierbar.

Hintergrund ist das libevent keine Dateien oder Streams verwaltet, sondern eben eigentlich nur unterschiedliche Eventsources verdaut. Um Auf Streams zu zu greifen verwendet libevent epoll und das kann nun mal keine Dateien.

Die Verwendung von Epoll kann man bei libevent ja durchaus noch weg konfigurieren, besagte Konfigurationsmöglichkeit bildet die PHP-Extension soweit ich sehe aber nicht ab.

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 27.01.2012, 14:55  
Erfahrener Benutzer
 
Registriert seit: 06.05.2011
Beiträge: 183
PHP-Kenntnisse:
Anfänger
DEdK4ever befindet sich auf einem aufstrebenden Ast
Standard

Was kann man denn mit libevent machen, wenn nicht Dateien beobachten? Laut Wikipedia ist es für "file descriptors", also auch Dateien und Verzeichnisse, geeignet?
Kann es sein, dass ich noch etwas nachladen muss (Habe ein Linux-System ohne Dev-Files, zum größten Teil)?
Danke jedenfalls für Deine Antwort.
DEdK4ever ist offline   Mit Zitat antworten
Alt 28.01.2012, 08:18  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Der Satz ist in der Wikipedia etwas unglücklich formuliert. libevent ist wirklich nur eine Event-Queue mit Callback-Funktion. Für die Events selber bedient sich libevent auch anderer Projekte - für Filedescriptoren wird intern halt Epoll verwendet. Epoll erlaubt aber eben keine normalen Dateien.

Man kann libevent so konfigurieren, dass statt Epoll Select verwendet wird, das geht nur eben - soweit ich sehen kann - nicht mit PHP. Damit könnte man dann aber durchaus auch wieder Veränderungen an Dateien und Verzeichnissen tracken.

In PHP sehe ich in der aktuell vorliegenden Form nicht viel Vorteile davon, libevent verwenden zu können. Ggf. könnte man damit vielleicht nen kleinen Server schreiben und die externen Verbindungen jeweils als Event sehen. Aber ob das so wirklich Vorteile bringt?

Gruß Jens
Jens Clasen ist offline   Mit Zitat antworten
Alt 28.01.2012, 10:26  
Erfahrener Benutzer
 
Registriert seit: 21.12.2009
Beiträge: 415
PHP-Kenntnisse:
Fortgeschritten
G.Schuster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was genau hast du denn vor?
Für Dateisystem-Überwachungen habe ich schon ein, zwei Mal "inotify" verwendet, wofür es, wie ich gerade feststellen konnte, sogar PHP-Erweiterungen gibt:
http://php.net/manual/en/book.inotify.php
http://pecl.php.net/package/inotify
__________________
actra.development - Schwabstr. 2 - 70825 Münchingen
www.actra.de/velopment/ - eMail: php.de@actra.de
Zend Certified Engineer for PHP5
G.Schuster ist offline   Mit Zitat antworten
Alt 28.01.2012, 23:34  
Erfahrener Benutzer
 
Registriert seit: 06.05.2011
Beiträge: 183
PHP-Kenntnisse:
Anfänger
DEdK4ever befindet sich auf einem aufstrebenden Ast
Standard

Ein Spiel - was sonst
Wichtiger als die Dateiänderung selbst ist das Ereignis, wenn sie geändert werden.
Aber ich hatte mittlerweile genug Zeit, um nachzulesen, dass PHP dafür nicht eventig genug ist.
Node.js ist ja gerade der Hit für sowas, aber irgendwie zu viel dazwischen udn unsympathisch..
Damit das ganze schön "smart" bleibt, lerne ich jetzt C.
Danke euch beiden für eure Antworten!
DEdK4ever ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Callback Rückgabewert 3jfx JavaScript, Ajax und mehr 5 30.06.2011 16:27
[Erledigt] Javascript funktioniert bei Callback nicht mehr tarian JavaScript, Ajax und mehr 11 28.09.2010 17:48
AutoSuggest mit Callback Funktion r4lle1882 JavaScript, Ajax und mehr 17 23.07.2010 00:27
[Erledigt] callback functions in JS Bibliotheken Squall JavaScript, Ajax und mehr 12 29.06.2010 10:38
[Erledigt] was ist ein callback nuna PHP Tipps 2010 20 20.05.2010 17:36
[Erledigt] function.call-user-func-array: First argument is expected to be a valid ca stayInside PHP-Fortgeschrittene 2 22.09.2009 20:00
Callback handler kann nicht aufgerufen werden PHP Tipps 2005-2 4 21.08.2005 18:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
libevent stdin, libevent, libevent php, linux inotify php pecl tutorial, libevent beispiele c, libevernt php filesystem, php dateiveränderungen, [warn] epoll add(4) on fd 6 failed, php libevent, libevent beispile, libevent beispiele, libevent fopen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum