PHPでシェルスクリプトの出力をリアルタイムに表示する方法
みなさん、こんにちは。ワンクリック起動機能を実装するシェルスクリプトができました。これを Web バージョンにしたいと考えています
しかし、このスクリプトの実行には約 2 ~ 3 分と長い時間がかかり、その間にいくつかの成功プロンプトが画面にエコー表示されます
しかし、今は php を使用してこのスクリプトを調整しています。 exec と system を実行すると、ステートメントが Web ページに印刷される前に、スクリプトが完全に実行されるまで待つ必要があることがわかりました
さて、私の質問は、シェルはステートメントを印刷してから、代わりに Web ページにステートメントを表示できるかということです。シェルが完全に実行されるのを待っていますか? 完成したら一緒に紹介します
皆さんありがとうございます!
ディスカッションに返信 (解決策)
echo ステートメントはシェル内にあります。これを行うことができます
シェルを呼び出すときに、出力リダイレクトを追加し、それをファイルに追加できます。このシェルを呼び出すには、以下が必要です。バックグラウンドで実行されます。
次に、php を使用して tail コマンドを呼び出し、出力ファイルを読み取り、毎秒表示します。バッファを 0 に設定する必要があります。そうしないと、表示されるまで 4096 待機します。
例:
exec("/home/web/a.sh >> /home/web/a.log 2>&1 &");
$log = file_get_contents('/home/web/a. log ');
ここでは、各行を配列に記録し、毎回新しい行のみをエコーすることができます。
exec も system も関数です
関数なので、呼び出されると必ず戻りを待ちます
呼び出された関数にコールバック関数がない限り
exec も system もコールバック関数インターフェイスを提供していないため、完了するのを待つだけです
echo ステートメントはシェル内にありますよね? 次のようになります
シェルを呼び出すとき、出力リダイレクトを追加してファイルに追加できます。このシェルを呼び出すには次のようにする必要があります。バックグラウンドで実行されます。
次に、php を使用して tail コマンドを呼び出し、出力ファイルを読み取り、毎秒表示します。バッファを 0 に設定する必要があります。そうしないと、表示されるまで 4096 待機します。
例:
exec("/home/web/a.sh >> /home/web/a.log 2>&1 &");
$log = file_get_contents('/home/web/a. log ');
ここでは、各行を配列に記録し、毎回新しい行のみをエコーすることができます。
ご返信ありがとうございます。この手順が完了したら再度投稿します。何か問題が発生した場合は、お知らせください
execもsystemも関数です
関数なので呼び出されると必ず戻りを待ちます
呼び出された関数にコールバック関数がない限り
execもsystemも無いのでコールバック関数インターフェイスを提供します。あとは彼が完了するのを待つだけです
このステップを完了したら、もう一度投稿します。何か問題が発生した場合は、お知らせください
遅くなりましたが、上の 2 人のおかげで問題は解決しました
1 階の方法と同様です
スクリプトはバックグラウンドで実行する必要があります。出力はファイルにリダイレクトされます
php は 1 秒ごとにファイルに新しく追加されたコンテンツを定期的に読み取ります。ここで、ファイルのオフセットを記録し、fseek を使用してそれを見つけます。スクリプト、途中から飛び出して終わります

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
