Контакты

Достижения

Все достижения (10)

Наибольший вклад в теги

Все теги (42)

Лучшие ответы пользователя

Все ответы (45)
  • Как организовать возможность какого-либо действия пользователя 5 раз в 3 суток?

    Не нужно никакого Cron`а и хранения попыток проголосовать.
    Создаете табличку, где будут логгироваться голоса:
    CREATE TABLE IF NOT EXISTS `votes_log` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `user_id` int(10) unsigned NOT NULL,
      `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

    При попытке проголосовать делаете запрос в базу:
    SELECT COUNT(*) FROM `votes_log` WHERE date > DATE_SUB(NOW(), INTERVAL 3 DAY) AND user_id=?

    Этот запрос возвращает сколько раз проголосовал пользователь за последние 3 суток.
    Если меньше 5-ти - принимаем голос (и записываем в эту таблицу).
    Ответ написан
    4 комментария
  • Почему PHP выдает странную ошибку при одинаковых условиях логики?

    Всё дело в этой строке:
    $result = json_encode($result);
    Когда цикл for идет на второй круг - $result уже не является массивом, и поэтому нельзя к нему вот так обращаться: $result[$i][$key]['names']
    Ответ написан
    4 комментария
  • Как командно разрабатывать php проект?

    1. Как уже сказали выше - git или mercurial (на bitbucket, github или на своем сервере). С основного репозитория клонируем копии на локальные машины.
    2. dev-среда:
    2.1 dev-сервер с поддоменами для каждого разработчика
    2.2 или локальный веб-сервер (у каждого свой)
    2.3 обязательно - "предпродакшн" сервер - там будут производиться проверки перед деплоем на продакшн
    3. Ставите каждому нормальную IDE, которая умеет работать с локальными файлами и деплоить изменения на сервер (PHPStorm).
    4. Настраиваете IDE таким образом, чтобы вы работали с локальными файлами, и при этом при сохранении изменения автоматически отправлялись на ваш dev-сервер.
    5. Юнит-тесты, функциональные тесты, чтобы перед деплоем на продакшн быть уверенным в том, что кто-то из разработчиков не сломал ваш проект своими изменениями.
    6. Если есть изменения в БД - миграции
    7. На продакшене также клонируетесь от основного репозитория (для удобства обновления кода)

    Т.о. процесс разработки будет выглядеть так:
    1. Разработчик pull`ит изменения из основного репозитория
    2. Что-то меняет в коде, тестируя это на своем dev-сервере
    3. После покрытия кода новыми тестами, прогоняет их и заливает изменения в основную ветку
    4. На предпродакшене обновляемся с основной ветки. Прогоняем все тесты.
    5. Если тесты прошли - на продакшене обновляемся на тот же коммит
    Ответ написан
    Комментировать
  • Можно ли в phр реализовать создание pdf файла с данным о заказе с проставленными печатями и подписью?

    1. Используете mPDF
    2. Создаете html-код с данным о заказе, картинками печати и подписями (их можно расположить с "position:absolute", чтобы встали на нужные места)
    3. Из html создаете pdf-файл:
    $mpdf = new mPDF;
    $mpdf->setBasePath("http://example.com");
    $mpdf->WriteHTML($html);
    $pdf = $mpdf->Output('', 'S');

    setBasePath - устанавливает домен, относительно которого вставлены картинки в html (если у них относительные пути)
    Ответ написан
    Комментировать
  • Как победить зависание при первичном просмотре iptv на LG SmartTV?

    ovaunit
    @ovaunit Автор вопроса
    Таки победил проблему!
    Решается это следующим образом. Перед первым запуском iptv-канала нужно сначала запустить на проигрывание (буквально на пару секунд) какой-нибудь .mp4 файл, который можно разместить в папке с самим приложением. После этого проигрывания, объект, который проигрывает видео, видимо, как-то инициализируется, и далее уже без проблем проигрывает iptv каналы!
    Ну естественно, это проигрывание mp4 файла можно замаскировать под буфферизацию iptv-канала, спрятав за картинку загрузки.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (9)