1

タイトルが曖昧な場合は申し訳ありませんが、言い方がよくわかりませんでした。

私がしていること

Linuxコマンドを実行して、データを変数に出力し、データを解析して、配列として出力しています。配列値はPHPを使用してページに表示され、このPHPページの出力は10秒ごとにAJAXを介して要求されるため、事実上、データは10秒ごとに取得および表示/更新されます。通常ははるかに少ないですが、リクエストごとに10,000文字もの文字が解析される可能性があります。

代替案

複数のユーザー(<10)がこのコマンドを自動的に実行するため、このデータを10秒ごとに取得するより良い*代替方法があるかどうかを知りたいです。

サーバーで実行されているcronジョブは、bashまたはphp(どちらが高速ですか?)を実行してデータを取得し、MySQLデータベースに保存できます。次に、PHP出力へのAJAX呼び出しは、10秒ごとにサーバーコードを実行するための直接呼び出しを行うのではなく、MySQLデータベースに値を返します。

なんで?

PHPから直接execを実行することにはセキュリティ上の懸念があることを知っています。また、(これがマイクロ最適化ではないことを願っています)サーバーのCPU使用率が心配です。サーバーはsempronプロセッサを実行しています。はい、まだ存在しています。

ユーザーがページ(アイデア#1)にいるときにのみこれを実行するということは、サーバーが実行する必要のないコードを実行していないことを意味します。しかし、これは遅くて安全ではありませんか?

Linuxコマンドのタイプが、その効率を判断するのに役立つ場合に備えて、次のようにします。

shell_exec("transmission-remote $host:$port --auth $username:$password -l");

上で概説した2つの方法では、効率とセキュリティのレベルに違いがあり、これ単なるマイクロマイクロ最適化ではないことを期待しています。より良い*別の方法があれば、私はこれらについて学びたいです!:)

4

2 に答える 2

3

データ処理を行う別のcronジョブのアイデアは正しいものだと思います。その通りです。PHPスクリプトからサーバーコマンドを直接実行することは、最も安全な方法ではないため、通常は避ける必要があります。

ただし、パフォーマンスの観点から、特にデータが常に変更および更新されている場合は、データのためにMySQLデータベースに絶えずアクセスしたくない場合があります。Memcacheのようなkey-valストレージシステムを使用することをお勧めします。使用可能なメモリが少ない場合は、ディスク/メモリストレージのハイブリッドです。バックグラウンドプロセスは定期的にキーの値を更新し、メインのWebサーバープロセスからその値にアクセスします。

于 2012-10-27T22:24:58.540 に答える
1

すべてのユーザーに必要なすべての情報を10秒ごとに作成する場合は、次のことを行う必要があります。

  • cronジョブにPHPを使用する
  • 提供される形式で必要なデータを生成します
  • 出力ファイルをWebフォルダー階層に保存します
  • クライアントに静的ファイルとして取得させます
于 2012-10-27T22:56:12.673 に答える