1

現在、中程度の量 (200 行) のテキストを提供する PHP スクリプトがあります。時間よりも新しいテキストファイルの内容を取得できるかどうか疑問に思っていたのは、おそらく PHP の filemtime() の最後の変更です。

この方法でテキスト ファイルの内容を取得することは可能ですか?

編集: filemtime() は、それ以降の更新がないため、非論理的です。

それを明確にするために、ある時間よりも新しいテキスト ファイルのすべての内部コンテンツを取得しようとしています。

例: line1 は time1 に投稿され、line2 は time2 に投稿されます。time2 を指定して、time2 よりも新しいファイルの内容を取得できるようにしたいと考えています。

4

3 に答える 3

1

ファイルへのすべてのエントリにタイムスタンプを付ける必要があります。次に、標準のfopen()/fread()関数を使用して、内容を 1 行ずつ読み取ります。次に、次のような正規表現マッチングを使用して時間をフィルタリングし、preg_match()それを探している時間と比較する必要があります。

于 2012-07-14T04:52:22.377 に答える
0

「ファイルが特定の時間よりも新しいファイルの内容」を意味する場合は、そうです。あなたはあなた自身の質問に答えたようです。filemtime()変更時間が気になる場合に使用し、関心のある時間と比較します。

「コンテンツが特定の時間よりも新しいファイルのコンテンツ」を意味する場合は、ファイル内のどのコンテンツが関心のある時間よりも新しいかを識別する他の方法がないわけではありません。 (たとえば、ファイルの各行は、その行がいつ書き込まれたかを示すタイムスタンプで始まります。それを使用できます。) これは、通常、ファイルシステムがファイル内の個々のバイトまたは行のタイムスタンプを追跡しないためです。通常、ファイル全体に関連付けられているタイムスタンプのみがあります。

于 2012-07-14T04:47:27.933 に答える
0

示されているように filemtime() またはstat()を使用して、特定のファイルの最終変更を判別できます。その情報を使用して、最新のファイルを特定し、それに応じてコンテンツを抽出できます。

最後のアクセス以降にファイルのどのコンテンツが新しいかを判断できる唯一の方法は、以前のコンテンツと最新のコンテンツを比較するか、コンテンツの古さを区別するために使用できるタイムスタンプを取得することです。

ファイルにタイムスタンプを挿入する方法があれば、その時点までにどのコンテンツが存在していたかを判断できます。次に、正規表現を使用して時間をフィルタリングし、X 時間後のデータのみを取得します。アーキテクチャによっては、静的ファイルを最後の更新で更新するのと同じくらい簡単なXを決定する何らかの方法が必要になります。次に、その値を使用して、どのデータが「新しい」かを判断します。

2 番目の方法は、アクセス後にファイルをアーカイブし、以前のコンテンツと現在のコンテンツを比較して、変更されたコンテンツを特定することです。

于 2012-07-14T04:48:29.670 に答える