Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.58 KB | None | 0 0
  1. <?php
  2. require 'vendor/autoload.php';
  3.  
  4. use PhpMultiCurl\Helper\Queue as TasksQueue;
  5. use PhpMultiCurl\PhpMultiCurl;
  6. use PhpMultiCurl\Task\Http as HttpTask;
  7. use PhpMultiCurl\Thread\CurlThreadError;
  8. use RedBeanPHP\R;
  9.  
  10. R::setup('mysql:host=localhost;dbname=dbname', 'root', '');
  11.  
  12. $pagesQueque = new TasksQueue();
  13. $filesQueque = new TasksQueue();
  14.  
  15. $onPageLoad = function (array $response)  use (&$filesQueque) {
  16.  
  17.     $dom = new simple_html_dom();
  18.     $dom->load($response['response_content']);
  19.     $name = $dom->find('.page_title', 0)->plaintext;
  20.     $description = strip_tags(trim($dom->find('.center-block-text', 0)->plaintext));
  21.     $rewrite = explode('/', $response['url']);
  22.     $rewrite = end($rewrite);
  23.     $category = trim($dom->find('#contentBlockInfo', 0)->find('li', 0)->find('a', 0)->plaintext);
  24.     $screen = $dom->find('meta[property=og:image]', 0)->content;
  25.     $id = (int)trim($dom->find('meta[property=ya:ovs:id]', 0)->content);
  26.     $screenPath = 'static/screens/'.uniqid(null, true).'.png';
  27.    
  28.     $downloadTask = new HttpTask($screen);
  29.     $downloadTask->setOnLoad(function ($response) use ($screenPath) {
  30.         printf("Качаю скрин : %s", $screenPath);
  31.         file_put_contents($screenPath, $response['response_content']);
  32.     });
  33.     $filesQueque->enqueue($downloadTask);
  34.  
  35.  
  36.     $file = R::dispense('file');
  37.     $file->title = trim($name);
  38.     $file->description = $description;
  39.     $file->uri = trim($rewrite);
  40.     $file->baseUri = trim($response['url']);
  41.     $file->category = trim($category);
  42.     $file->screen = trim($screenPath);
  43.     $file->baseId = $id;
  44.     R::store($file);
  45.     printf("File: %s \r\n", $name);
  46. };
  47. $onLoad = function (array $response) use (&$pagesQueque, &$onPageLoad) {
  48.     $dom = new simple_html_dom();
  49.     $dom->load($response['response_content']);
  50.     $divs = $dom->find('.plg-index-block');
  51.     foreach ($divs as $div) {
  52.         $link = $div->find('a', 0)->href;
  53.         $task = new HttpTask($link);
  54.         $task->setOnLoad($onPageLoad);
  55.         $pagesQueque->enqueue($task);
  56.     }
  57. };
  58. $queue = new TasksQueue();
  59. for ($i = 0; $i < 82; ++$i) {
  60.     $task = new HttpTask('http://videos/video?page=' . $i);
  61.     $task->setOnLoad($onLoad);
  62.     $queue->enqueue($task);
  63. }
  64. $phpMultiCurl = new PhpMultiCurl();
  65. $phpMultiCurl->setNumberOfThreads(5);
  66. $phpMultiCurl->executeTasks($queue);
  67.  
  68. $phpMultiCurl = new PhpMultiCurl();
  69. $phpMultiCurl->setNumberOfThreads(20);
  70. $phpMultiCurl->executeTasks($pagesQueque);
  71.  
  72. $phpMultiCurl = new PhpMultiCurl();
  73. $phpMultiCurl->setNumberOfThreads(20);
  74. $phpMultiCurl->executeTasks($filesQueque);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement