Рубрика: PHP

Мультизапрос

Существуют задачи в которых нужно выполнить много запросов к сайту и получить контент. Обычная функция file_get_contents() будет очень долго отрабатывать, если в цикле будет 10 запросов.

Данная функция существенно ускоряет скорость обработки запросов. Она принимает массив ссылок. И возвращает содержимое страницы.

function multi_request($urls = null)
    {
        $curly = array();
        $result = array();
        $mh = curl_multi_init();
        foreach ($urls as $id => $url) {
            $curly[$id] = curl_init();
            curl_setopt($curly[$id], CURLOPT_URL, $url);
            curl_setopt($curly[$id], CURLOPT_HEADER, 0);
            curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curly[$id], CURLOPT_TIMEOUT, 30);
            curl_setopt($curly[$id], CURLOPT_FOLLOWLOCATION, true);
            curl_setopt($curly[$id], CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($curly[$id], CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($curly[$id], CURLOPT_USERAGENT, "Mozilla/5.0(Windows;U;WindowsNT5.1;ru;rv:1.9.0.4)Gecko/2008102920AdCentriaIM/1.7Firefox/3.0.4");
            //curl_setopt($curly[$id], CURLOPT_COOKIEJAR,'cookies.txt');
            //curl_setopt($curly[$id], CURLOPT_COOKIEFILE,'cookies.txt');
            curl_multi_add_handle($mh, $curly[$id]);
        }
        $running = null;
        do {
            curl_multi_exec($mh, $running);
        } while ($running > 0);
        
        foreach ($curly as $id => $c) {
            $result[$id] = curl_multi_getcontent($c);
            curl_multi_remove_handle($mh, $c);
        }
        curl_multi_close($mh);
        return $result;
    }

 

Как очистить кеш шаблонов в Laravel?

Добавив данный код в роутинг, можно будет отправлять post запрос для очистки кеша.

Route::post('/clear-cache', ['middleware' => ['auth', 'role:admin'], function () {
    $cachedViewsDirectory = app('path.storage') . '/framework/views/';
    if ($handle = opendir($cachedViewsDirectory)) {
        while (false !== ($entry = readdir($handle))) {
            if (strstr($entry, '..')) {
                continue;
            }
            @unlink($cachedViewsDirectory . $entry);
        }
        closedir($handle);
    }
    return 1;
}]);

 


                                

Исправление ошибки при запуске команды db:seed

Содержимое ошибки

C:\xampp\php\php.exe artisan db:seed
[Illuminate\Database\QueryException]                                         
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xC  
A\xF3\xF0\xFC\xE5\xF0...' for column 'name' at row 1 (SQL: insert into `cat  
egory` (`name`, `updated_at`, `created_at`) values ("���������� ������", 20  
16-09-14 14:49:44, 2016-09-14 14:49:44))

 

Чтобы исправить нужно изменить кодировку файла DatabaseSeeder.php с windows-1251 на utf-8

Установка Laravel 5

Предположим что мы уже установили composer.

Теперь настроим выполнение php из командной строки. Для этого перейдем в Мой компьютер->Свойства->Дополниельные параметры системы->Переменные среде->PATH->Изменить

Добавим путь к php. У меня он в папке «C:\xampp\php;», добавляем в конец.

Скачиваем последнюю версию фреймворка. Добавляем в необходимую папку. В этой папке выполняем команду «composer update». Все само загрузиться и установиться.

 

Делаем копию файла .env.example, и сохраняем как .env.

Выполняем команду «php artisan key:generate»

 

Создаем файл .htaccess в него записываем. Теперь при обращении к сайту будет транслироваться содержимое папки public.

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>