2010-09-21 2 views
1

J'ai un problème avec PHP où j'écris très souvent dans un fichier, et il faut parfois beaucoup de temps pour ouvrir ce fichier. La description complète est ici:En PHP, comment puis-je obtenir fopen à timeout très rapidement lors de l'ouverture d'un fichier local?

fopen file locking in PHP (reader/writer type of situation)

Ma question est de savoir comment puis-je obtenir fopen Timeout, disons, 50ms. J'ai regardé stream-context-create mais cela semble être pour HTTP, ou du moins, si cela fonctionnera pour les fichiers locaux, je ne suis pas sûr de savoir comment spécifier l'option dans le tableau.

Des idées?

Merci!
Daniel

+0

La réponse d'Artefacto est valide - mais PHP n'a pas de sémantique de gestion de fichiers sophistiquée, ni l'accès au système d'exploitation de bas niveau requis pour les implémenter. Si c'est possible, n'utilisez pas de fichiers pour stocker vos données dans PHP – symcbean

Répondre

3

Je ne suis pas sûr de ce que vous essayez, mais dans certaines plates-formes (et non Windows, bien), vous pouvez ouvrir un fichier en mode non-bloquant avec le drapeau n:

$f = fopen("/tmp/foo/bar", "wn+"); 

Cela devrait revenir immédiatement. Vous pouvez alors probablement utiliser stream_select avec un délai d'attente de 50 ms.

Je dis «probablement» parce que ce drapeau n'est pas documenté.

+0

@downvoter: Vous voulez vous expliquer? – Artefacto

-1

changeant la variable default_socket_timeout dans le php.ini -'1', qui aide serait?

Questions connexes