Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][AJAX][PHP]Proste - trudne / jak dokleić do URL i opóźnić część skryptu
skleroza
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.06.2017

Ostrzeżenie: (0%)
-----


Witam,
Dawno nie bawiłem się w pisanie skryptów i wiele wyleciało mi z głowy.
Dlatego też mam prośbę o pomoc
1. Jak dodać zapytanie do URL
2. Jak opóźnić część skryptu

Kawałek z HTML
  1. <script type="text/javascript" language="javascript" src="ajax.js"></script>
  2. <div align="center"><h2>*Sprawdź*</h2>
  3. <form action="java script:get(document.getElementById('acctform'));" name="acctform" id="acctform">
  4. <textarea rows="1" cols="1" style="width: 25%; height: 20px" id="search_id"></textarea>
  5. <p>
  6. <input type="submit" name="button" value="Sprawdź adres" onclick="return Tab_Click(this)">
  7. </form>
  8. <br>
  9. <div align="center" id="waiting"></div>
  10. </p>
  11. <br>
  12. <div align="center" id="showresults"></div>
  13. </div>


Do tego cały ajax.js

var http_request = false;
function makePOSTRequest(url, parameters) {
http_request = false;
if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}

http_request.onreadystatechange = alertContents;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
http_request.send(parameters);
}

function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
result = http_request.responseText;
document.getElementById('waiting').innerHTML = '';
document.getElementById('showresults').innerHTML = result;
} else {
alert('There was a problem with the request.');
}
}else{
document.getElementById('waiting').innerHTML = '<img src="loading.gif">';}
}

function get(obj) {
var poststr = "" + encodeURI( document.getElementById("search_id").value );
makePOSTRequest('getaddress.php', poststr);
}


No i tu zaczynają się problemy
getaddress.php
  1.  
  2. // to działa ok
  3. $url = "https://blockchain.info/address/1CoAgA2Bb9XDMsBv6cE1YNuU5Z1BormTTc";
  4.  
  5. // tu już nie chce zwracać odpowiedzi nawet jak dam
  6. //if (isset ($_POST['search_id'])) {
  7. //$url = "https://blockchain.info/address/{$_POST['search_id']}";
  8.  
  9. //dalej jest chyba ok bo zwraca dane
  10.  
  11. $ch = curl_init();
  12. curl_setopt($ch, CURLOPT_URL,$url);
  13. //curl_setopt($ch, CURLOPT_POST, 1);
  14. //curl_setopt($ch, CURLOPT_POSTFIELDS, '$_POST['search_id']');
  15. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  16. curl_setopt($ch, CURLOPT_TIMEOUT, 25);
  17. $wejscie = curl_exec($ch);
  18. curl_close($ch);
  19.  
  20. preg_match('/<div class="col-md-5">(.+?)<\/div>/ism', $wejscie, $wyjscie);
  21. preg_match('/<div class="col-md-4" style="overflow:visible;">(.+?)<\/div>/ism', $wejscie, $wyjscie1);
  22.  
  23. echo($wyjscie[0]);
  24. echo($wyjscie1[0]);
  25.  
  26. // i tu moje drugie pytanie jak opóźnić tą część skryptu
  27. // w ten sposób opóźnia cały skrypt
  28. // wiem że można zrobić to w JS ale nie potrafię tego zrobić a wolał bym aby wszystko było w .php
  29.  
  30. flush();
  31. sleep(20);
  32.  
  33. $baza = "blebleble................";
  34.  
  35. echo($baza)
  36. ?>



Z góry dziękuję za wszelką pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
freewalker
post
Post #2





Grupa: Zarejestrowani
Postów: 90
Pomógł: 4
Dołączył: 14.02.2015

Ostrzeżenie: (0%)
-----


w PHP każda funkcja jest blokująca, dalszy kod się nie wykona, póki nie wykona się kod poprzedzający.

Masz 2 rozwiązania:
1: niech PHP liczy sobie for(i) do 100 tryliardów, opóźni to resztę o kilkanaście sekund, może minut (IMG:style_emoticons/default/wink.gif)
2: a teraz na poważnie:

$start = time();

while(true) {
if ((time() - $start) > 300) {
return false; // opóźnienie dalszego kodu o 300 sekund
}
}
// dalszy kod do przerobienia

Ten post edytował freewalker 25.06.2017, 22:25:21
Go to the top of the page
+Quote Post
skleroza
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 23.06.2017

Ostrzeżenie: (0%)
-----


Cytat(freewalker @ 25.06.2017, 23:22:57 ) *
2: a teraz na poważnie:


Coś jest nie tak, wiem że ta funkcja opóźnia działanie - ładowanie
  1. $url = "https://blockchain.info/address/1CoAgA2Bb9XDMsBv6cE1YNuU5Z1BormTTc";
  2.  
  3. $ch = curl_init();
  4. curl_setopt($ch, CURLOPT_URL,$url);
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  6. curl_setopt($ch, CURLOPT_TIMEOUT, 25);
  7. $wejscie = curl_exec($ch);
  8. curl_close($ch);
  9.  
  10. preg_match('/<div class="col-md-5">(.+?)<\/div>/ism', $wejscie, $wyjscie);
  11. preg_match('/<div class="col-md-4" style="overflow:visible;">(.+?)<\/div>/ism', $wejscie, $wyjscie1);
  12.  
  13. echo($wyjscie[0]);
  14. echo($wyjscie1[0]);
  15.  
  16. $start = time();
  17.  
  18. while(true) {
  19. if ((time() - $start) > 300) {
  20. return false; // opóźnienie dalszego kodu o 300 sekund
  21. }
  22. }
  23. // dalszy kod do przerobienia
  24.  
  25. $baza = "blebleble................";
  26.  
  27. echo($baza)
  28. ?>


ale zwraca mi tylko jeden wynik:
  1. preg_match('/<div class="col-md-5">(.+?)<\/div>/ism', $wejscie, $wyjscie);

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 02:40