ajax ile php komut dosyası yeniden akımı çıkışı Sinatra olabilir?

0 Cevap php

Ben bir php script 15mins bitirmek gibi sürer Sunucu A üzerinde çalışan var. Ben web tarayıcısı üzerinden komut dosyasını çalıştırın ve (bazı php komutları bitmiş gibi) bloklar tarayıcıya çıktı gönderir. Örneğin, bloklar için aşağıya bakınız. Komut DB2 veritabanı oluşturur ve toplamda birkaç adım gerektirir.

Şimdi AJAX ile sunucu B Sinatra aynı komut dosyasını çalıştırın. Bu çalışıyor ama php script bitince ben (tüm bloklar ben onu aramak gibi) çıktı sürü olsun.

Komut dosyası (değil Sinatra) doğrudan tarayıcı başlatıldığında sanki aynı şekilde çalışır, böylece sinatra / ajax şekilde kurulabilir herhangi bir yolu var mı? Bütün ajax çağrı bittiğinde değil, bittikten sonra ben de her bloğun sonuçlarını görebilirsiniz.

HAML file (extract)

:javascript
  function loadXMLDoc2(mode)
  {
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      document.getElementById("db2").innerHTML="<BLINK> processing</BLINK> "+mode+" procedure";
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("db2").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","/ajaxdb2?mode="+mode,true);
    xmlhttp.send();
     }

    %td 
      %button{:type => "button", :onclick => "loadXMLDoc2('create')"}
        create DB2
      %br

ruby code (extract)

get '/ajaxdb2?' do

  execute_db2_script(params['mode'].downcase)
end 

def execute_db2_script(mode)

  if not (mode == 'clear')

    db2_database = 'RATIONAL'
    url = "http://db2express/imacs/radek/db2.rft/rationalTest.php?mode=#{mode}&database=#{db2_database}"
uri = URI.parse(url)
start = Time.new

response = Net::HTTP.start(uri.host, uri.port) do |http|
  http.open_timeout =  5
  http.read_timeout = 1500
  http.request_get(uri.request_uri)
end

stop = Time.new

return "#{response.body} <BR>processed in #{stop - start} seconds"
 else
  return "DB2 results"
 end
end

PHP code sample (2blocks)

flush_buffers();

$output = array();
$shellOutput = exec("echo 'password' | sudo -su db2inst1 -S '/opt/ibm/db2/V9.7/bin/db2 deactivate database $databaseName'", $output);

echo "<pre>Output = " . print_r($output,1) . "</pre>";
if( strpos($output[0],'DB20000I') === false && strpos($output[0],'SQL1496W') === false && strpos($output[0],'SQL1013N') === false && strpos($output[0],'SQL30061N') === false ){
    echo("Could not deactivate database.");
}
flush_buffers();


$output = array();
$shellOutput = exec("sudo -su db2inst1 -S '/opt/ibm/db2/V9.7/bin/db2 drop database $databaseName'", $output);
echo "<pre>Output = " . print_r($output,1) . "</pre>";
if( strpos($output[0],'DB20000I  The DROP DATABASE command completed successfully') === false && strpos($output[0],'SQL1013N') === false && strpos($output[0],'SQL30061N') === false ){
    echo("Dropping of the database was not successful.");
}

0 Cevap