• Почему curl не может скачать эту ссылку?

    ivankomolin
    @ivankomolin
    Добавьте в код
    curl_setopt($curl, CURLOPT_HEADER, 1);

    И сразу будет понятно что происходит.
    Если сервер отдал 200, значит это он решил, что редирект дальше делать не нужно.
    Ответ написан
    Комментировать
  • Ошибка в БД со строками- как исправить?

    ivankomolin
    @ivankomolin
    Insert в таблицу(код создания которой вы привели) такую ошибку выдать не сможет. Так как в ней нет индекса "Индекс 1".
    Посмотрите индексы установленные в таблице, в которую вы делаете insert.
    Ответ написан
    Комментировать
  • Как в yii2 сделать такую мультизагрузку?

    ivankomolin
    @ivankomolin
    1. Убрать из инпута(type="file") id картинок.
    2. Добавить инпуты(type="hidden") c id картинок в той же последовательности что и инпут(type="file")
    3. На сервере провести сопоставление
    Ответ написан
    Комментировать
  • Redis на двух проектах Laravel на одном сервере как настроить?

    ivankomolin
    @ivankomolin
    Есть несколько способов, наиболее правильные из них следующие:
    1. Два запущенных инстанса
    2. Один инстанс, 2 разные базы
    Ответ написан
    Комментировать
  • API Вконтакте: как эффективней всего организовать очередь запросов?

    ivankomolin
    @ivankomolin
    1. Соблюдать лимиты. Не более 3х запросов в секунду. Лимиты выдаются на аккаунт. Если не хватает, добавить несколько аккаунтов(несколько sim на разные лица) + прокси на каждый, чтобы не забанили всю пачку аккаунтов.
    Также есть количественные лимиты, но о них ничего не известно, так что злоупотреблять вызовом одного метода на аккаунт не стоит.
    2. Посмотреть в документации метод execute, позволяет обратиться к пачке методов в одном запросе.
    3. Посмотреть в сторону Callback API или Bots Long Poll для уменьшения числа запросов(Пуш данных при возникновения событий в сообществе вам на сервер)
    Ответ написан
    Комментировать
  • Почему не работает Workerman для wss соединения?

    ivankomolin
    @ivankomolin
    Черным по белому написано, что эта ошибка возможно из-за того что он не может найти на диске сертификат из свойства local_cert

    Проверьте правильность путей до сертификатов

    Если все указано верно, то посмотрите в сторону crypto_type.
    Может быть выбран тот, которого не имеется на сервере.
    Ответ написан
    1 комментарий
  • Как посчитать общее количество записей в Sphinx с групировкой?

    ivankomolin
    @ivankomolin
    Видимо вы как-то неправильно передаете запрос в ActiveDataProvider
    Ответ написан
  • Ошибка соединения mysql проблема в докере?

    ivankomolin
    @ivankomolin
    Первым делом в данной ситуации нужно смотреть в лог mysql
    Ответ написан
    Комментировать
  • Как вставить в mysql текущее время в милисекундах?

    ivankomolin
    @ivankomolin
    Если у вас mysql 5.6 и выше используйте это:
    `updated` = NOW(3)

    Если ниже, придется задавать через php.

    Немного теории:
    mysql> CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) );
    Query OK, 0 rows affected (0.33 sec)
    
    mysql> INSERT INTO fractest VALUES
         > ('17:51:04.777', '2014-09-08 17:51:04.777', '2014-09-08 17:51:04.777');
    Query OK, 1 row affected (0.03 sec)
    
    mysql> SELECT * FROM fractest;
    +-------------+------------------------+------------------------+
    | c1          | c2                     | c3                     |
    +-------------+------------------------+------------------------+
    | 17:51:04.78 | 2014-09-08 17:51:04.78 | 2014-09-08 17:51:04.78 |
    +-------------+------------------------+------------------------+
    1 row in set (0.00 sec)


    Обратите внимание как заданы типы данных TIME(2). Цифра в скобках означает количество символов после точки в итоге. Поддерживается до 6 цифр(микросекунды)
    Также можно получить текущюю дату с точностью до микросекунд, пример:
    SELECT NOW(6);
    Это работает начиная с mysql 5.6.

    В mysql 5.5 дату нужно хранить в таком же формате до 6 цифр после точки в виде строки, получить текущюю дату с точностью больше секунд нельзя. Единственное что есть в эту сторону это функция MICROSECOND. Она позволяет выделить дробную часть из строки с датой.
    SELECT MICROSECOND('2010-12-10 14:12:09.019473');
    Ответ написан
    Комментировать
  • Mysql запрос с COUNT, SUBTOTAL и GRANDTOTAL - как построить?

    ivankomolin
    @ivankomolin
    Все эти данные из mysql используя sql вытянуть конечно можно, но не в таком виде, их все равно придется обрабатывать, чтобы получить внешний вид как у вас. А сам запрос к mysql серверу будет не оптимальным и расходовать ресурсы при выполнении.

    Идеальный вариант решения задачи в данном случае получить все данные с помощью sql одним простым запросом, а уже потом привести в нужный вид на php.

    Ну уже если сильно хочется то вот пример как получить все необходимые данные:
    (SELECT
    	timestamp, 
    	ip, 
    	useragent, 
    	daynumber, 
    	count(*) as total
    FROM 
    	table
    GROUP BY 
    	daynumber
    )
    UNION
    (SELECT
    	'' as timestamp,
    	'' as ip, 
    	'' as useragent, 
    	'' as daynumber, 
    	count(*) as total
    FROM 
    	table
    )


    Итогом будет таблица, последняя колонка которой будет показывать subtotal текущего daynumber, а в последней строке будет показывать GRANDTOTAL
    Ответ написан
    Комментировать
  • Как сравнить две базы данных MySql?

    ivankomolin
    @ivankomolin
    Проверьте наличие ключей в таблицах.
    Ответ написан
  • Как конвертировать в twig?

    ivankomolin
    @ivankomolin
    Динамические переменные... Когда вижу, меня почему-то передергивает
    Вот скажите, это действительно удобнее массивов например?

    А в twig такое можно написать так например:
    {% set var = setting_field~'_value' %}
    {{ var }}
    Ответ написан
    Комментировать
  • Как проксировать потоковое аудио MP3 на PHP?

    ivankomolin
    @ivankomolin
    Php плохой инструмент для реализации этой задачи. Копайте в сторону nginx. Модули ngx_http_proxy_module и ngx_stream_proxy_module. А стандартную авторизацию можно пройти используя его proxy_header.
    Ответ написан
    Комментировать
  • Как подключиться клиентом к сокету на PHP?

    ivankomolin
    @ivankomolin
    К сожалению, на такие вопросы ответить сложно.
    Приведите код, который делает вышеописанное.
    Если библиотека работает, то ведь проблема в нем.

    Можете попробовать еще одну библиотеку, на мой взгляд очень простая для освоения:
    https://github.com/Textalk/websocket-php
    И точно работает) Только сегодня проверял)
    Ответ написан
    Комментировать
  • Ошибка при получении изображения?

    ivankomolin
    @ivankomolin
    Во первых посмотрите что возвращает static::saveImageUrl($fromUrl).
    Скорее всего он возвращает не содержимое картинки, поэтому и ошибка.
    И header('Content-Type: image/png') не нужен в данном случае.

    А вообще судя по тегу "парсинг" вы так картинки грабите с других сайтов. Это очень плохо. Медленно и прожорливо по ресурсам.

    Картинки это же файлы, зачем вы содержимое этих файлов грузите в память через php.
    Грузите их через консоль тем же curl или wget сразу на диск.
    Ответ написан
    Комментировать
  • Как отслеживать количество запросов к google maps api?

    ivankomolin
    @ivankomolin
    На сколько мне известно, запросы на геокодирование в google maps api можно выполнять только по одному адресу.
    Есть еще возможность собрать несколько запросов в один с помощью Batch Requests, но там для каждого запроса самостоятельно указывается ключ, по которому потом и можно сопоставить нужный ответ с нужным запросом.

    Сдается мне что проблема не с google maps api, а с реализацией описанного механизма на вашей стороне.
    Ответ написан
    Комментировать
  • Как выбрать последнюю обновленную или добавленную строку в базе mysql?

    ivankomolin
    @ivankomolin
    SELECT * FROM item ORDER BY id DESC LIMIT 1

    Если id инкремент, то выведет последнюю добавленную строку.

    Если нужно выводить последнюю измененную строку, то необходимо добавить поле updated, в которое писать время изменения. А дальше по аналогии с примером выше, только сортировка по дате изменения.
    Ответ написан
    2 комментария
  • Как обратится по номеру к конкретному элементу в phpQuery?

    ivankomolin
    @ivankomolin
    $links = $pq->find('a');
    
    //Выведет 3ю найденную ссылку
    var_dump($links[2]);
    Ответ написан
    Комментировать
  • Как получить бинарные данные каждой страницы Pdf файла?

    ivankomolin
    @ivankomolin
    По сути задачи подобного вида сводятся к следующему:
    1. Разбить страницы pdf на отдельные изображения(например с помощью imagemagick)
    2. Прогнать изображения через какую-нибудь OCR(например Tesseract)
    3. Cпарсить полученные данные

    Зачем получать бинарные данные каждой страницы pdf?
    Ответ написан
  • Как вытащить все родительские записи в БД?

    ivankomolin
    @ivankomolin
    Пример рекурсивной функции, с помощью которой можно получить дерево из плоского массива.

    /**
    	 * Формирует дерево
    	 * @param arr $items
    	 * @param int $parentId
    	 * @return arr
    	 */
    	public function tree($items, $parentId = 0) {
    		$tree = array();
    		foreach($items as $item) {
    			if ($item['parentId'] == $parentId) {
    				$tree[$item['id']] = $item;
    				$tree[$item['id']]['sub'] = $this->tree($items, $item['id']);
    			}
    		}
    
    		return $tree;
    	}


    Лучше конечно использовать какой-нибудь алгоритм для хранения деревьев в бд. Их множество, один из них nested sets, как рекомендовали выше. Но выбор алгоритма должен исходить из условий конкретной задачи.
    Ответ написан
    Комментировать