Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][XML][PHP]Wolno działający skrypt
Forum PHP.pl > Forum > Przedszkole
Adi777
Cześć
Mam problem z wolno działającym skryptem
ma on pobrać RSS do bazy danych

Oto skrypt:
  1. <?php
  2.  
  3. date_default_timezone_set('Europe/Warsaw'); // required since PHP 5.4(?)
  4. require_once 'database/compatibility_patch.php';
  5. require_once 'database/DB.php';
  6. if ( ! $db ){
  7. $dbconfig = array(
  8. 'hostname' => 'localhost',
  9. 'username' => 'zmoderowane',
  10. 'password' => 'zmoderowane',
  11. 'database' => 'rss',
  12. 'dbprefix' => '',
  13. 'dbdriver' => 'mysql',
  14. 'pconnect' => true,
  15. 'db_debug' => true,
  16. 'cache_on' => false,
  17. 'char_set' => 'utf8',
  18. 'dbcollat' => 'utf8_general_ci',
  19. );
  20. try {
  21. $db = DB($dbconfig);
  22. }
  23. catch ( Exception $e ){
  24. die($e->getMessage());
  25. }
  26. }
  27. switch ($_REQUEST['action']){
  28. case 'cron-crawl-rss':
  29.  
  30. $url = 'http://wiadomosci.gazeta.pl/pub/rss/wiadomosci_kraj.htm';
  31.  
  32. $data = file_get_contents($url);
  33.  
  34. require_once 'phpquery.php';
  35.  
  36. $content_type = null; // auto
  37. $xml = phpQuery::newDocument($data, $content_type);
  38.  
  39. $len = $xml->find('item')->length;
  40.  
  41. // var_dump($items);exit;
  42.  
  43. $items = array();
  44.  
  45. $i = 0;
  46. while ( $i < $len ){
  47.  
  48.  
  49. $title = $xml->find('item:eq('.$i.') title')->text();
  50. $link = $xml->find('item:eq('.$i.') link')->text();
  51.  
  52. $items[] = array(
  53. 'title' => $title,
  54. 'link' => $link,
  55. );
  56.  
  57. $i += 1;
  58. }
  59.  
  60. $exists = 0;
  61. $inserted = 0;
  62.  
  63. // var_dump($items);exit;
  64.  
  65. foreach ($items as $item){
  66.  
  67. $result = $db
  68. ->where('link', $item['link'])
  69. ->limit(1)
  70. ->get('rss')
  71. ->row_array();
  72. if ( $result ){
  73.  
  74. $exists += 1;
  75. }
  76. else {
  77.  
  78. $db
  79. ->set('title', $item['title'])
  80. // ->set('body', )
  81. // ->set('thumb', )
  82. ->set('link', $item['link'])
  83. ->set('date', date('Y-m-d H:i:s'))
  84. ->set('date_gm', gmdate('Y-m-d H:i:s'))
  85. ->insert('rss');
  86.  
  87. $inserted += 1;
  88. }
  89. }
  90.  
  91. $result = array(
  92. // 'code' => 100,
  93. 'message' => 'OK',
  94. 'slug' => 'ok',
  95. 'status' => 'success',
  96. 'exists' => $exists,
  97. 'inserted' => $inserted,
  98. );
  99.  
  100. break;
  101. default:
  102. $result = array(
  103. 'status' => 'error',
  104. 'message' => 'No action.',
  105. );
  106. break;
  107. }
  108. if ( $db ){
  109. $db->close();
  110. unset($db);
  111. }
  112. if ( getenv('HTTP_ORIGIN')){
  113. if ( ! headers_sent()){
  114. header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
  115. header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
  116. header('Access-Control-Max-Age: 1000');
  117. // header('Access-Control-Allow-Headers: Content-Type');
  118. header('Access-Control-Allow-Headers: x-requested-with ');
  119. }
  120. }
  121. if ( ! $_no_output ){
  122. if ( $_REQUEST['callback'] ){
  123. if ( ! headers_sent()){
  124. header('Content-type: application/javascript');
  125. }
  126. echo '/**/ callback(\''.json_encode($result).'\');';
  127. }
  128. else {
  129. if ( ! headers_sent()){
  130. header('Content-type: application/json');
  131. }
  132. echo json_encode($result);
  133. }
  134. }


a to jest link: http://rss.myfreespace.us/run.php?action=cron-crawl-rss
Ktoś może wie dlaczego to tak muli czasami?
nospor
Z tego co widze skrypt moze wykonac maksymalnie 20 zapytan do bazy, wiec nie powinien mulic. Pytanie jeszcze jak czesto go odpalasz?
Moze muli bo czasami pobranie tego rss zajmuje duzo czasu bo serwer z ktorego pobierasz muli?

ps: naprawde uwazasz ze udostepnianie danych do bazy danych do dobry pomysl?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.