Javascriptで1プロセスづつPHPのプロセスを実行させる方法

Javascriptで1プロセスづつPHPのプロセスを実行させる方法

Javascriptで1プロセスづつPHPのプロセスを実行させる方法を解説します。

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 で ウィンド(オーバーレイ)を表示させる簡単方法

スポンサードリンク