Maison > base de données > tutoriel mysql > le corps du texte

Le verrouillage de fichier en PHP résout le problème de plusieurs processus lisant et écrivant un fichier en même temps

黄舟
Libérer: 2017-09-08 14:43:04
original
1335 Les gens l'ont consulté

L'exemple de cet article décrit comment PHP résout le problème de plusieurs processus lisant et écrivant un fichier en même temps en fonction des verrous de fichiers. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Tout d'abord, PHP prend en charge les processus mais pas le multi-threading (clarifiez-le d'abord s'il s'agit d'une opération sur un fichier, en fait). , il vous suffit de donner le fichier. Cela peut être résolu en ajoutant un verrou. Aucune autre opération n'est requise. PHP flock l'a déjà fait pour vous.

Utilisez flock pour verrouiller le fichier avant l'écriture et le déverrouiller après l'écriture. Cela permet à plusieurs threads de lire et d'écrire un fichier en même temps pour éviter les conflits. C'est probablement le processus suivant


/*
*flock(file,lock,block)
*file 必需,规定要锁定或释放的已打开的文件
*lock 必需。规定要使用哪种锁定类型。
*block 可选。若设置为 1 或 true,则当进行锁定时阻挡其他进程。
*lock
*LOCK_SH 要取得共享锁定(读取的程序)
*LOCK_EX 要取得独占锁定(写入的程序)
*LOCK_UN 要释放锁定(无论共享或独占)
*LOCK_NB 如果不希望 flock() 在锁定时堵塞
/*
if (flock($file,LOCK_EX))
{
fwrite($file,'write more words');
flock($file,LOCK_UN);
}
else
{
//处理错误逻辑
}
fclose($file);
)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal