Advertisement
Guest User

Untitled

a guest
Oct 31st, 2014
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5.  
  6. <script>
  7. var es;
  8.  
  9. function startTask() {
  10. es = new EventSource('progress.php');
  11.  
  12. //a message is received
  13. es.addEventListener('message', function(e) {
  14. var result = JSON.parse( e.data );
  15.  
  16. addLog(result.message);
  17.  
  18. if(e.lastEventId == 'CLOSE') {
  19. addLog('Received CLOSE closing');
  20. es.close();
  21. var pBar = document.getElementById('progressor');
  22. pBar.value = pBar.max; //max out the progress bar
  23. }
  24. else {
  25. var pBar = document.getElementById('progressor');
  26. pBar.value = result.progress;
  27. var perc = document.getElementById('percentage');
  28. perc.innerHTML = result.progress + "%";
  29. perc.style.width = (Math.floor(pBar.clientWidth * (result.progress/100)) + 15) + 'px';
  30. }
  31. });
  32.  
  33. es.addEventListener('error', function(e) {
  34. addLog('Error occurred');
  35. es.close();
  36. });
  37. }
  38.  
  39. function stopTask() {
  40. es.close();
  41. addLog('Interrupted');
  42. }
  43.  
  44. function addLog(message) {
  45. var r = document.getElementById('results');
  46. r.innerHTML += message + '<br>';
  47. r.scrollTop = r.scrollHeight;
  48. }
  49. </script>
  50. </head>
  51. <body>
  52. <br />
  53. <input type="button" onclick="startTask();" value="Start Long Task" />
  54. <input type="button" onclick="stopTask();" value="Stop Task" />
  55. <br />
  56. <br />
  57.  
  58. <p>Results</p>
  59. <br />
  60. <div id="results" style="border:1px solid #000; padding:10px; width:300px; height:250px; overflow:auto; background:#eee;"></div>
  61. <br />
  62.  
  63. <progress id='progressor' value="0" max='100' style=""></progress>
  64. <span id="percentage" style="text-align:right; display:block; margin-top:5px;">0</span>
  65. </body>
  66. </html>
  67.  
  68. <?php
  69. header('Content-Type: text/event-stream');
  70. header('Cache-Control: no-cache');
  71.  
  72. function send_message($id, $message, $progress) {
  73. $d = array('message' => $message , 'progress' => $progress);
  74. echo "id: $id" . PHP_EOL;
  75. echo "data: " . json_encode($d) . PHP_EOL;
  76. echo PHP_EOL;
  77. ob_flush();
  78. flush();
  79. }
  80.  
  81. //LONG RUNNING TASK
  82. for($i = 1; $i <= 10; $i++) {
  83. send_message($i, 'on iteration ' . $i . ' of 10' , $i*10);
  84. sleep(1);
  85. }
  86.  
  87. send_message('CLOSE', 'Process complete');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement