Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][XML][PHP]Wolno działający skrypt
Adi777
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 3.12.2017

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


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?

Ten post edytował nospor 4.12.2017, 12:54:49
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 10:13