Javascriptで1プロセスづつPHPのプロセスを実行させる方法
Javascriptで1プロセスづつPHPのプロセスを実行させる方法を解説します。
サーバー上で動くプロセスは一定時間内でしか動かすことができません。
(サーバーに負荷がかかり他のユーザーさんのプロセスが動かなくなる)
なので時間のかかる処理は、いくつかのプロセスに分けで実行させる必要があります。
cron を使う方法もありますが、cron の設定は案外面倒だしサーバーによって書き方が違っていたり、そもそもcronを使えないサーバーもあります。
したがって cronを使って処理するのはある程度サーバーに固定されたプロセスでないとお勧めできません。
実際には、JavaScriptをタイマーで動かし、プロセスをわけて処理させます。
任意のプロセスは、プログラムのコマンドラインと同じ考え方とし、実行順に配列に設定するものとします。
例えば、以下のように
形にすると javascript 側は次のようなパーツが必要になります。
オーバーレイ部の詳細は以下から
→JavaScript で ウィンド(オーバーレイ)を表示させる簡単方法
Javascriptで1プロセスづつPHPのプロセスを実行させる方法
サーバー上で動くプロセスは一定時間内でしか動かすことができません。
(サーバーに負荷がかかり他のユーザーさんのプロセスが動かなくなる)
なので時間のかかる処理は、いくつかのプロセスに分けで実行させる必要があります。
cron を使う方法もありますが、cron の設定は案外面倒だしサーバーによって書き方が違っていたり、そもそもcronを使えないサーバーもあります。
したがって cronを使って処理するのはある程度サーバーに固定されたプロセスでないとお勧めできません。
実際には、JavaScriptをタイマーで動かし、プロセスをわけて処理させます。
Javascriptで1プロセスづつPHPのプロセスを実行させるひな形
1プロセスづつPHPのプロセスを実行させるJavascriptの構成
1プロセスづつで、さらに任意のプロセスを実行することを想定します。任意のプロセスは、プログラムのコマンドラインと同じ考え方とし、実行順に配列に設定するものとします。
例えば、以下のように
0001 i=0;
0002 cmd[i]='mkdir';opt[i]='toDir';i++;
0003 cmd[i]='copy';opt[i]='a.pdf,b.pdf';i++;
形にすると javascript 側は次のようなパーツが必要になります。
- グローバル変数部
- 初期設定部
- オーバーレイ表示
- タイマー起動
- タイマープロセス
- プログレスバー等表示
- タイマー停止
- コマンド呼び出し部
- タイマー再起動
0001 グローバル変数部
0002 var intervalID;
0003 var cmdmax = n;
0004 var cmdnum = 0;
0005 var cmd = new Array();
0006 var opt = new Array();
0007 function first_call()
0008 {
0009 初期設定部
0010 i=0;
0011 cmd[i]='mkdir';opt[i]='toDir';i++;
0012 cmd[i]='copy' ;opt[i]='a.pdf,b.pdf';i++;
0013 cmdmax = i;
0014 cmdnum = 0;
0015 オーバーレイ表示
0016 タイマー起動( intervalID = setInterval("wp_migration_yuzu_update()", 50); )
0017 }
0018 function タイマープロセス()
0019 {
0020 タイマー停止( clearInterval(intervalID); )
0021 if(cnmdnum>=cmdmax){
0022 プログレスバー等(終了)表示
0023 }else{
0024 プログレスバー等表示
0025 }
0026 コマンド呼び出し部 (cmd[cmdnum],opt[cmdnum])
0027 cmdnum++;
0028 タイマー再起動( intervalID = setInterval("wp_migration_yuzu_update()", 50); )
0029 }
0030 function コマンド呼び出し部(cmd,opt)
0031 {
0032 var url = '';
0033 url+= '$plugin_dir_url';
0034 url+= 'jointPOST.php'; // php 処理部
0035 $.ajax({
0036 type: 'POST',
0037 url: url,
0038 dataType: 'json',
0039 async : false, // ← asyncをfalseに設定する(同期)
0040 data: {
0041 cmd : cmd,
0042 opt : opt,
0043 },
0044 beforeSend: function(xhr, settings) {
0045 // ajax送信前の処理
0046 },
0047 complete: function(xhr, status) {
0048 // ajax応答後の処理
0049 },
0050 success: function(data) {
0051 // ajax通信成功時の処理
0052 },
0053 error: function(xhr,status,error){
0054 // ajax通信成失敗の処理
0055 }
0056 });
0057 }
オーバーレイ部の詳細は以下から
→JavaScript で ウィンド(オーバーレイ)を表示させる簡単方法