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.");
}