Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require 'vendor/autoload.php';
- use PhpMultiCurl\Helper\Queue as TasksQueue;
- use PhpMultiCurl\PhpMultiCurl;
- use PhpMultiCurl\Task\Http as HttpTask;
- use PhpMultiCurl\Thread\CurlThreadError;
- use RedBeanPHP\R;
- R::setup('mysql:host=localhost;dbname=dbname', 'root', '');
- $pagesQueque = new TasksQueue();
- $filesQueque = new TasksQueue();
- $onPageLoad = function (array $response) use (&$filesQueque) {
- $dom = new simple_html_dom();
- $dom->load($response['response_content']);
- $name = $dom->find('.page_title', 0)->plaintext;
- $description = strip_tags(trim($dom->find('.center-block-text', 0)->plaintext));
- $rewrite = explode('/', $response['url']);
- $rewrite = end($rewrite);
- $category = trim($dom->find('#contentBlockInfo', 0)->find('li', 0)->find('a', 0)->plaintext);
- $screen = $dom->find('meta[property=og:image]', 0)->content;
- $id = (int)trim($dom->find('meta[property=ya:ovs:id]', 0)->content);
- $screenPath = 'static/screens/'.uniqid(null, true).'.png';
- $downloadTask = new HttpTask($screen);
- $downloadTask->setOnLoad(function ($response) use ($screenPath) {
- printf("Качаю скрин : %s", $screenPath);
- file_put_contents($screenPath, $response['response_content']);
- });
- $filesQueque->enqueue($downloadTask);
- $file = R::dispense('file');
- $file->title = trim($name);
- $file->description = $description;
- $file->uri = trim($rewrite);
- $file->baseUri = trim($response['url']);
- $file->category = trim($category);
- $file->screen = trim($screenPath);
- $file->baseId = $id;
- R::store($file);
- printf("File: %s \r\n", $name);
- };
- $onLoad = function (array $response) use (&$pagesQueque, &$onPageLoad) {
- $dom = new simple_html_dom();
- $dom->load($response['response_content']);
- $divs = $dom->find('.plg-index-block');
- foreach ($divs as $div) {
- $link = $div->find('a', 0)->href;
- $task = new HttpTask($link);
- $task->setOnLoad($onPageLoad);
- $pagesQueque->enqueue($task);
- }
- };
- $queue = new TasksQueue();
- for ($i = 0; $i < 82; ++$i) {
- $task = new HttpTask('http://videos/video?page=' . $i);
- $task->setOnLoad($onLoad);
- $queue->enqueue($task);
- }
- $phpMultiCurl = new PhpMultiCurl();
- $phpMultiCurl->setNumberOfThreads(5);
- $phpMultiCurl->executeTasks($queue);
- $phpMultiCurl = new PhpMultiCurl();
- $phpMultiCurl->setNumberOfThreads(20);
- $phpMultiCurl->executeTasks($pagesQueque);
- $phpMultiCurl = new PhpMultiCurl();
- $phpMultiCurl->setNumberOfThreads(20);
- $phpMultiCurl->executeTasks($filesQueque);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement