問題タブ [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.

0 投票する
1 に答える
5385 参照

ftp - FTP を使用してファイルを転送しようとすると、ファイルの上書きの問題が発生します

List および Put 権限のみを持つ FTP サーバーを使用しています。ただし、削除、上書き、名前変更の権限はありません。

次の実装を使用して、単純な FTP を使用してファイルを転送しようとすると

上記のコードでは、ファイル オブジェクト インスタンスを使用してリモートでファイルが作成されます。その後、バッファリングされたストリームでファイルを書き込もうとしています。ここで、システムは、既に作成されているファイルに書き込んでいるかのように動作し、私のサーバーには上書き権限がないため、次のエラーがスローされます。

ファイルの作成とストリームの書き込みの両方が同時に行われるように、ファイル オブジェクトを使用してファイル転送を処理する方法を教えてください。

0 投票する
3 に答える
8583 参照

php - PHP での SplFileObject と fopen の比較

PHPfopenとは対照的に、使用することの長所と短所は何ですか?SplFileObject

私が見たところ、該当する場合は例外がスローされるため、エラー処理SplFileObjectに使用するときに便利です。try...catchこれ以外に、どちらかを推奨する理由は他にありますか?

(おまけ:なぜそれは呼ばれているのSplFileObjectですか?何Splの略ですか?なぜ単純ではないのですFileObjectか?)

更新:の 1 つの制限は、 (まだ)メンバー関数SplFileObjectがないことです。close一部のシナリオでは、これが問題になることがあります (例: Unlink および SplFileObject )。

0 投票する
1 に答える
1603 参照

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

0 投票する
1 に答える
291 参照

php - SplFileObject __toString 継承

SplFileObject を拡張して__toStringメソッドを実装するクラスがありますが、メソッドの呼び出し方法によっては、一貫性のない動作が発生するようです。親メソッドが呼び出されることもあれば、子メソッドが呼び出されることもあります。なぜこれが起こるのか誰か説明できますか?

0 投票する
1 に答える
2029 参照

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

出力をエコーし​​ましたが、囲み文字 (") を認識していないようですSetCSVControlSetCSVControl私がエクスポートしているCSVファイル)。

たとえば、最初の列の結果を出力すると、( ABEL, TAMMY 454454 ) が表示されます ( "ABEL )。

これは私のロケール設定 (en-GB,en-US;q=0.8,en;q=0.6) に問題がある可能性があることを読みましたか?

どんな助けでも素晴らしいでしょう。

0 投票する
1 に答える
2985 参照

php - SplFileInfo オブジェクトからストリーム リソースを取得する

次のように、ファイルのストリーム リソースを期待するメソッドを呼び出しています。

$splFileInfoオブジェクトは のインスタンスですSplFileInfo

$splFileInfoを呼び出さずにオブジェクトのストリーム リソースを取得する方法はありますfopenか?

0 投票する
1 に答える
792 参照

php - splFileObject の複数のインスタンスの作成

私はこれに似たクラスを持っています

最初に呼び出されたメソッドのみが機能する場合、それらが一緒に呼び出された場合、最初に呼び出されたメソッドのみが機能するようです。new問題は、オブジェクトがどのように構築されるかを理解していないことに関係していると思います。

0 投票する
1 に答える
587 参照

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

これを修正する方法はありますか?たぶん、配列に値があることを確認することによって?

ありがとう