php flockの使用例の説明
php flockの使用例
bool flock ( resource $handle , int $operation [, int &$wouldblock ] )
flock()を使用すると、任意のプラットフォーム(ほとんどのUnix派生製品やWindowsを含む)で使用できる単純な読み取り/書き込みモデルを実装できます
PHP 5.3より前。 2、ロックは fclose() (スクリプト終了後に自動的に呼び出されます) によって解放されますが、手動でロックを解除する必要があります
operation
1.LOCK_SH 共有ロックを取得 (読み取り)プログラム)
2.LOCK_EX 排他ロックを取得する(プログラムを書く)
3.LOCK_UN ロックを解放する(共有か排他かを問わない)
4.LOCK_NB flock( )はロックされています。Aを使用してファイルを記述し、ファイルを読み取り、blocking
php
rreeeb <?php
$file = 'test.txt';
$fp = fopen($file, 'w');
if(flock($fp, LOCK_EX)){ // 取得独占锁
fwrite($fp, "Hello World\r\n"); // 写入数据
sleep(10); // sleep 10秒,文件被锁定
fwrite($fp, "Hello PHP\r\n"); // 写入数据
flock($fp, LOCK_UN); // 解锁
}
fclose($fp);
?>
a は排他ロックを取得し、b は待機することしかできず、a が実行されてロックが解除された後にのみ b を実行できます。
例 2: A と B の両方がブロックせずに共有ロックを使用しますa.php<?php
$file = 'test.txt';
$fp = fopen($file, 'r');
if(flock($fp, LOCK_SH)){ // 取得贡献锁
while(!feof($fp)){
echo fread($fp, 100);
}
flock($fp, LOCK_UN);
}
fclose($fp);
?>
b.php<?php
$file = 'test.txt';
$fp = fopen($file, 'r');
if(flock($fp, LOCK_SH)){ // 取得共享锁
sleep(10); // sleep 10秒
while(!feof($fp)){
echo fread($fp, 100);
}
flock($fp, LOCK_UN);
}
fclose($fp);
?>
ログイン後にコピーまず a.php を実行し、次に実行しますb.php
<?php $file = 'test.txt'; $fp = fopen($file, 'r'); if(flock($fp, LOCK_SH)){ // 取得共享锁 sleep(10); // sleep 10秒 while(!feof($fp)){ echo fread($fp, 100); } flock($fp, LOCK_UN); } fclose($fp); ?>
b は、a の実行完了を待たずにファイルの内容を出力できます。ノンブロッキング
例 3: A と B は両方とも排他ロックを使用してファイルを書き込み、ブロックしています
a.php<?php
$file = 'test.txt';
$fp = fopen($file, 'r');
if(flock($fp, LOCK_SH)){ // 取得共享锁
while(!feof($fp)){
echo fread($fp, 100);
}
flock($fp, LOCK_UN);
}
fclose($fp);
?>
b.php<?php
$file = 'test.txt';
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX)){ // 取得独占锁
fwrite($fp, "Hello World\r\n"); // 写入数据
sleep(10); // sleep 10秒,文件被锁定
fwrite($fp, "Hello PHP\r\n"); // 写入数据
flock($fp, LOCK_UN); // 解锁
}
fclose($fp);
?>
ログイン後にコピーログイン後にコピー まずa.phpを実行し、次にb.php
<?php $file = 'test.txt'; $fp = fopen($file, 'a'); if(flock($fp, LOCK_EX)){ // 取得独占锁 fwrite($fp, "Hello World\r\n"); // 写入数据 sleep(10); // sleep 10秒,文件被锁定 fwrite($fp, "Hello PHP\r\n"); // 写入数据 flock($fp, LOCK_UN); // 解锁 } fclose($fp); ?>
bを実行する必要があります実行されましたデータを書き込む前に、ブロック
例 4: LOCK_NB はロックされてもブロックせず、待機もしません
a.php<?php
$file = 'test.txt';
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX)){ // 取得独占锁
fwrite($fp, "How Are You\r\n"); // 写入数据
fwrite($fp, "Show Me The Money\r\n"); // 写入数据
flock($fp, LOCK_UN); // 解锁
}
fclose($fp);
?>
b.php <?php
$file = 'test.txt';
$fp = fopen($file, 'a');
if(flock($fp, LOCK_EX)){ // 取得独占锁
fwrite($fp, "Hello World\r\n"); // 写入数据
sleep(10); // sleep 10秒,文件被锁定
fwrite($fp, "Hello PHP\r\n"); // 写入数据
flock($fp, LOCK_UN); // 解锁
}
fclose($fp);
?>
ログイン後にコピーログイン後にコピーまず a.php を実行し、次に b.php を実行しますb は排他ロックを取得できません。 a の実行が完了するまで待つ必要はありませんが、ロックを取得できないプロンプトを直接返します。 ノンブロッキング
概要:
読み取りの場合は待つ必要はありませんが、書き込みの場合は待つ必要があります。読み取りが完了します。 排他ロックLOCK_EXを使用すると、書き込み/読み取りの両方が待機する必要があります。
LOCK_UN、共有/読み取りロックの使用に関係なく、使用後にロックを解除する必要があります。
LOCK_NB は、ロックされている場合、ブロックされませんが、ロックを求めるプロンプトが表示されます。
この記事では、php flock の使用例について説明します。関連コンテンツについては、php 中国語 Web サイトを参照してください。 関連する推奨事項:
php str_replace 指定時刻を置換する方法の説明
以上がphp flockの使用例の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
<?php $file = 'test.txt'; $fp = fopen($file, 'a'); if(flock($fp, LOCK_EX)){ // 取得独占锁 fwrite($fp, "Hello World\r\n"); // 写入数据 sleep(10); // sleep 10秒,文件被锁定 fwrite($fp, "Hello PHP\r\n"); // 写入数据 flock($fp, LOCK_UN); // 解锁 } fclose($fp); ?>
関連する推奨事項:
php str_replace 指定時刻を置換する方法の説明

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

INNODBのフルテキスト検索機能は非常に強力であり、データベースクエリの効率と大量のテキストデータを処理する能力を大幅に改善できます。 1)INNODBは、倒立インデックスを介してフルテキスト検索を実装し、基本的および高度な検索クエリをサポートします。 2)一致を使用してキーワードを使用して、ブールモードとフレーズ検索を検索、サポートします。 3)最適化方法には、単語セグメンテーションテクノロジーの使用、インデックスの定期的な再構築、およびパフォーマンスと精度を改善するためのキャッシュサイズの調整が含まれます。

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。
