2017-11-27 38 views
-2

私は今までPHPでshell_exec()を使って実行していたPythonスクリプトを持っています。はHTMLページにテキストを出力します。問題は、PHPが遅すぎるため、ページの一部を更新するたびにリロードする必要があるため、PHPよりも速いJavascriptを使用することを考えました。Node.jsを使わずにJavascriptでPythonを実行するにはどうすればいいですか?これは可能ですか?

Pythonコード全体をJavascriptに書き換えたくないので、Node.jsを使わずにPythonを実行する方法はありますか?私はJavascriptの完全な初心者です。

答えて

1

まさにあなたのPythonスクリプトは何をしていますか?私はあなたがXY問題の犠牲者になっているかもしれないと思う。スピードが必要で、PythonコードをJavascriptで実装することができれば、私はあなたのコードを書き直すよりも何もお勧めできないと思います。

もう一つの選択肢は、セッションごとに一度あなたのpythonスクリプトを実行し、(RESTや何かを介して)入力を受け取り、そのような出力を返すことですが、あなたのスクリプトに応じてもっと正直なことかもしれません。

+0

私のPythonスクリプトはテキストアドベンチャーゲームで、実行すると 'pickle'ファイルに保存されているゲームセッションを復元し、(' sys'モジュールを使って現在Pythonに送られている)ユーザー入力を求めます。私はそれがサーバー側であり、私のコードを保護できるので、node.jsを使うことに決めました。 – Tiskolin

+0

もう一つの潜在的な修正点:サーバーコードが非常にシンプルな場合は、代わりにフラスコのようなPythonフレームワークで書き換えて、それをネイティブに呼び出すことができます。あなたは間違いなくあなたがウェブページを更新する必要があるたびに状態をunpicklingしたくない、それはあなたが何をしても非常に遅くなるでしょう。最悪の場合、状態をJSON文字列で保持し、スクリプトの引数として渡します。 –

1

ここでPHPは遅くはありませんが、PHP自体が非常に高速になる可能性があります。遅いのは、シェルをインスタンス化し、すべての要求に対して子プロセスを実行する必要があるということです。スクリプトの出力をキャッシュし、そのキャッシュを非同期にリフレッシュするものを除いて、このパターンを他の言語でも試してみると、同じ減速が見られます。

また、JavaScriptの役割を混乱させる可能性があります。あなたのサーバーは、Python、PHPまたはJavaScript(JSはnode.jsランタイムを使用します)などを実行できます。サーバー側は、サーバーサイドで他のものを呼び出すことができます。 JavaScriptは、訪問者のブラウザでクライアント側で実行することもできます。

エンドポイントを作成しない限り、クライアント側のJavaScriptはサーバー側にアクセスできません。クライアント側のJavaScriptは、マウスやキーボードを使用しているユーザーよりもはるかに優れていません。作成するエンドポイントは、より複雑な場合を除いて、上記で説明したのとまったく同じ減速を引き起こします。

+0

Javascriptの他にこれを行う方法は他にありませんか? – Tiskolin

関連する問題