1

配列でいっぱいの約100mbのphpファイルがあります(配列のみ)。

このファイル(処理用)を含むスクリプトを作成しました。最初に、デフォルトのXampp 128mbメモリ制限を使い果たし、1024mbに上げましたが、それは永遠にかかり、何もしません。

コードのすべての行を削除し、インクルードとエコーを残して実行が終了したことを確認したので、ファイルのサイズが非常に大きいために問題が発生していると確信しています。同じことを実行します(これは永遠にかかります)、私はまた、100MBのファイルを別々の同じもので実行しようとしました。

10MBのファイルも永遠に使用されますが、同様の1MBのファイルはほぼ瞬時に読み取られて実行されるため、問題はファイルサイズだけではありません。

私は単純なプロジェクトにc++を使用することを避けていましたが、phpの方が簡単であり、実行されるタスクは、c++で実行された場合の追加速度の恩恵を受ける必要がないためです。しかし、私がこの問題を解決することに運がないなら、私はそうしなければならないと思います。


編集

データベースを使用しない理由:1-データベースを使用しなかった人は誰でも、データベースを読んだり、コピーしたりするなど、最初に何かを行うことができない場合、これを整理されたデータベースに保存するのはかなり困難です。それからの部品またはメモリまたは何かに入れます。

2-大きなプロジェクトや大量のデータについて考えている場合、phpでこれまでに行ったことのほとんどすべてが大量の保存データ(せいぜい50kb)を必要としなかったため、データベースの操作経験はありません。これと同じように、私は間違いなくそうしますが、私は最初からこの混乱を起こさなかったので、今はそれを元に戻す必要があります。

3-すべてのコンピューターにOS全体を収めるのに十分なRAMが搭載されている場合に、10MBなどのデータのごく一部をハードドライブに保存する必要があるというロジックは、誰かがそれについて適切な説明をしない限り、ほとんど理解できません。同時に多くのファイルにアクセスすることは理解できますが、私が言ったように、これは単純なプロジェクトです。これは、特定の時間にアクセスされる唯一のファイルです。これは、ある種のWebサイトを作成することすらなく、実行することです。数回、それで終わります。

4

1 に答える 1

2

ステップ1:Webサーバーを破棄します。どこかにphp実行可能ファイルがあるはずです。それを使ってスクリプトを実行するだけです。/path/to/php script.php

そうすれば、少なくとも直接何が起こっているのかがわかります。

ステップ2:実際に十分な空きRAMがあることを確認します。そうでない場合は...より良いマシンを入手してください。PHP配列は非常に複雑な構造であり、そうでない場合は反復ごとにスワップインおよびスワップアウトします。

ステップ3:問題がインクルードにあることを確認します。その直後にエコーを追加し、実行されるかどうかを確認します。

他のすべてが失敗した場合は、ファイルを1行ずつ解析してみてください。形式によっては、コードをeval()するか、正規表現を使用して解析する方が簡単な場合があります。それはあなた次第です。

また:

3-ハードドライブに10MBのようなデータのごく一部を保存する必要があるためのロジック

まともなDBは、とにかくデータのコピーをRAMに保持します。違いは、DBMSが効率的に保存およびアクセスできるように最適化されていることです。もちろん、データセット全体をプログラムに取り込むことでより効率的に実行されるタスクがいくつかありますが、そのためにWebページを使用することは望ましくありません。(上記のステップ1を参照)

于 2012-09-16T22:44:44.787 に答える