問題タブ [splfileobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ftp - FTP を使用してファイルを転送しようとすると、ファイルの上書きの問題が発生します
List および Put 権限のみを持つ FTP サーバーを使用しています。ただし、削除、上書き、名前変更の権限はありません。
次の実装を使用して、単純な FTP を使用してファイルを転送しようとすると
上記のコードでは、ファイル オブジェクト インスタンスを使用してリモートでファイルが作成されます。その後、バッファリングされたストリームでファイルを書き込もうとしています。ここで、システムは、既に作成されているファイルに書き込んでいるかのように動作し、私のサーバーには上書き権限がないため、次のエラーがスローされます。
ファイルの作成とストリームの書き込みの両方が同時に行われるように、ファイル オブジェクトを使用してファイル転送を処理する方法を教えてください。
php - PHP での SplFileObject と fopen の比較
PHPfopen
とは対照的に、使用することの長所と短所は何ですか?SplFileObject
私が見たところ、該当する場合は例外がスローされるため、エラー処理SplFileObject
に使用するときに便利です。try...catch
これ以外に、どちらかを推奨する理由は他にありますか?
(おまけ:なぜそれは呼ばれているのSplFileObject
ですか?何Spl
の略ですか?なぜ単純ではないのですFileObject
か?)
更新:の 1 つの制限は、 (まだ)メンバー関数SplFileObject
がないことです。close
一部のシナリオでは、これが問題になることがあります (例: Unlink および SplFileObject )。
php - コマンドを 2 回実行すると、PHP 群れが既存のロックを検出しないのはなぜですか?
少し説明すると、Symfony2 のセットアップがあります。拡張した抽象コマンド クラスを使用しています。これらのバッチのいずれかを 1 回だけ実行できるようにします。私の目標は、私が開いて群がるロックファイルを作成して、phpスクリプトが可能な限り停止したときにロックが自動的に解放されるようにすることです。
これを実現するために、Lock という名前のクラスを作成しました。このクラスは SplFileObject を拡張し、基本的に *.lock をどこかに (通常は /var/lock/*) 作成するためのラッパーです。現在、このロックの検出に問題があります。fopenとflockを使用して機能するセットアップがありました。何らかの理由で、それはもう検出されません。
私は基本的に私がやりたいことをするためにOOP構造を作成しました:
- ロックファイルの名前を決定する (フォルダーを使用)
- ロック オブジェクトを作成する
- ディレクトリを作成し、存在しない場合はファイルをロックします
- SplFileObject::__construct() を呼び出す
- ファイルをロックする
これをハンドルでもsplファイルオブジェクトでも動作させることができません。スクリプトを実行して 15 秒間スリープさせ、別のコンソールで同じスクリプトを実行すると、スクリプトがファイルをロックできたという結果が得られ、flock は true を返します。同じスクリプトで同じロック ファイルに 2 つの Lock オブジェクトを作成すると、最初のロックでは true になり、2 番目のロックでは false になります。つまり、2 回目のロックの取得に失敗したことを意味します。スクリプトは機能しているようです。
ただし、両方のスクリプトで 2 つのロックを使用してスクリプトを 2 回実行すると、両方のスクリプトで True と false が返されます...つまり、スクリプト全体でファイルが適切にロックされていないようです:/
私が間違っていることを教えてくれる人はいますか?ファイル名を確認しましたが、スクリプトを実行した両方の時間で同じです。777、755、733 などの複数の権限を試しましたが、違いはありません。
私がそれを呼び出す方法(クラスの一部):
Lock.php
php - SplFileObject __toString 継承
SplFileObject を拡張して__toString
メソッドを実装するクラスがありますが、メソッドの呼び出し方法によっては、一貫性のない動作が発生するようです。親メソッドが呼び出されることもあれば、子メソッドが呼び出されることもあります。なぜこれが起こるのか誰か説明できますか?
php - SplFileObject::READ_CSV が CSV ファイルを正しく読み取っていないようです - エンクロージャを無視します "
この質問をする前に、ドキュメントを読み、このサイトを広範囲に検索しました。
CSV 行の例。
"ABEL, TAMMY 454454","End of: ABEL, TAMMY 454454",QP544454,28/10/2012 11:41,"0811 unlawfully use, possess","STEPHENS, JEREMY 54544454",LINK OPERATIONS,Located details incorrect,Entity: FORD FALCON Reg #: Colour: White
出力をエコーしましたが、囲み文字 (") を認識していないようですSetCSVControl
。SetCSVControl
私がエクスポートしているCSVファイル)。
たとえば、最初の列の結果を出力すると、( ABEL, TAMMY 454454 ) が表示されます ( "ABEL )。
これは私のロケール設定 (en-GB,en-US;q=0.8,en;q=0.6) に問題がある可能性があることを読みましたか?
どんな助けでも素晴らしいでしょう。
php - SplFileInfo オブジェクトからストリーム リソースを取得する
次のように、ファイルのストリーム リソースを期待するメソッドを呼び出しています。
$splFileInfo
オブジェクトは のインスタンスですSplFileInfo
。
$splFileInfo
を呼び出さずにオブジェクトのストリーム リソースを取得する方法はありますfopen
か?
php - splFileObject の複数のインスタンスの作成
私はこれに似たクラスを持っています
最初に呼び出されたメソッドのみが機能する場合、それらが一緒に呼び出された場合、最初に呼び出されたメソッドのみが機能するようです。new
問題は、オブジェクトがどのように構築されるかを理解していないことに関係していると思います。
php - list() を使用した未定義のオフセット
を使用して大きな CSV ファイルを解析していますSplFileObject
。この CSV には、ほぼ 100,000 のレコードと複数の列があります。
これらの列の一部は空です。
次のコードがあります。
スクリプトを実行すると、常にエラーが発生します。
PHP 通知: 未定義のオフセット: 5 行目の script.php の 1
PHP 通知: 未定義のオフセット: 5 行目の script.php の 2
PHP 通知: 未定義のオフセット: 5 行目の script.php の 35
5 行目は実際のlist() = $row
これを修正する方法はありますか?たぶん、配列に値があることを確認することによって?
ありがとう