Ответы пользователя по тегу PHP
  • Какой стиль программирования выбрать, чтобы не вникать спустя время в проект?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Тут как раз речь о том, что применимо для всех языков, а не только для PHP.
    Если будете применять устоявшиеся практики и паттерны; не изобретать велосипеды, а искать и интегрировать имеющиеся решения; а также уместно комментировать код и вести документацию - через год поблагодарите себя, даже если не придётся возвращаться к написанному и править, потому что вырастите в целом как востребованный специалист.
    Ответ написан
    Комментировать
  • В чем проблема с таймзоной?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    А с чего вы взяли, что время должно быть 17:54?
    2017-09-05T14:54:36+0300 стоит читать как "5 сентября 2017 года, время 14:54:36 по часовому поясу UTC+03"
    То же самое время в UTC будет выглядеть вот так: 2017-09-05T11:54:36+0000
    Ответ написан
    2 комментария
  • Целесообразно ли хранить картинки в БД?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Оба методы имеют свои достоинства и недостатки, но всё же хранение в виде простых файлов более органично. Это статика, которую нужно отдавать пользователю без участия скриптов.
    Ответ написан
    Комментировать
  • Серверный таймер на jQuery?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Какая точность нужна?
    Вообще, вижу 3 способа:
    - от стартующего уходит запрос на сервер, в БД или куда-нибудь ещё ставится флаг "отсчёт начат". Те самые 10к клиентов периодически, раз в секунду к примеру, делают ajax-запрос на сервер и узнают, начался отсчёт или нет. Точность зависит от периодичности запросов + сетевые лаги. Особых требований к софту в этом случае нету, но должен быть хорошо настроен сам вебсервер, чтобы выдерживать такой поток запросов, пусть и очень лёгких.
    - вебсокеты. Все ваши 10к клиентов имеют постоянное соединение с сервером, один из них по сокету посылает серверу сигнал "отсчёт начат", сервер сразу же рассылает его всем остальным. Тут уже надо настраивать демона, к которому собственно 10к клиентов и будут присоединены и который будет принимать и рассылать им сообщения. Точность зависит чисто от сети.
    - есть еще dklab_realplexor от Котерова. Используются long polling-запросы, эдакие "вебсокеты для бедных", но вообще работает решение это неплохо. Сам использовал на продакшне, но на очень маленьких нагрузках, а вот tjournal.ru его использует для организации онлайн-трансляций, и там нагрузки значительно больше.
    Ответ написан
  • Что делать, когда растет база данных?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Я бы сначала привёл в порядок индексы таблицы, так как тот же поиск по неиндексированному полю - это очень плохо.
    Далее, можно сделать аналогичную по структуре таблицу а-ля "order_archive", туда автоматически переносить все старые/выполненные/еще-по-каким-то-условиям-отобранные, короче, уже не актуальные заказы. И если нужно какую-то статистику, искать уже по ней, не трогая актуальные. Желательно этот поиск вынести с рабочего сервера, интернет-магазину ни к чему видимые пользователями лаги.
    В довесок к вышеперечисленному, если хочется очень быстрых запросов в плане статистики, можно настроить Sphinx и искать по нему, он очень быстр (пробовал), или ElasticSearch (собираюсь пробовать)
    Ответ написан
    Комментировать
  • Какой скрипт PHP авторизации выбрать?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Loginza, uLogin - для авторизации через сторонние сервисы. C uLogin'ом как-то больше понравилось работать.
    А если вы и правда хотите полноценную систему пользователей для самописного проекта, то и правда, напишите свою же)
    Ответ написан
  • Как отслеживать события, если JS подключается динамически по аяксу (после построения дом дерева)?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    $(document).on('click', '.target-class', function(e){
      // doit
    })
    Ответ написан
    Комментировать
  • Мы ищем PHP-программиста или разработчика. И реально ли его найти на такую ЗП в Москве?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    "PHP-разработчик" даже как-то не звучит, если честно, но это субъективное. А вообще, помимо PHP, указаны другие серверные языки: Erlang и Perl. Может, это "Веб-разработчик"?
    Ответ написан
    2 комментария
  • Как мне сделать правильный ajax запрос?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Можно при потере фокуса полем ввода города, отправлять введенное туда значение на сервер, там пробовать искать в БД город по значению, и если есть - возвращать область и страну.
    Ответ написан
  • Как устранить проблему пропусков при записи в myisam таблицу?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    InnoDB - транзакционное хранилище, и если вы явно не стартуете транзакцию, каждый ваш запрос неявно оборачивается в транзакцию (если не настраивать это иначе, в вашем случае, думаю такого не было). Если вы начнете явно открывать транзакцию перед вставкой ваших многих тысяч записей, и в конце коммитить, прирост по скорости будет раз в 100. Попробуйте так для начала, а про пропуски звучит, если честно, бредово как-то.
    Ответ написан
    8 комментариев
  • MYSQL Insert - импорт json файла с большим количеством данных - как?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Из личного опыта:
    - "сервер похоже не вывозит выпадая с 500 ошибкой" - а лог ошибок на что? Там все написано, почему падает.
    - самое страшное - делать запросы на изменение данных вне явно открытой транзакции в транзакционную таблицу (InnoDB). set autocommit=0, стартуете транзакцию и можно циклом вставлять данные. Неявная транзакция на каждый запрос замедляет работу раз в 100-200.
    - вариант @zelenin'а c пакетным запросом - вообще не пробовал, но может быть хорошей альтернативой явным транзакциям.
    - нет никакой нужды выполнять такое через веб, и иметь нюансы, с ним связанные - таймлимиты php и самого веб-сервера. Выполняйте импорт, запуская скрипт из командной строки. Я так демонов делал, работали по принципу "запустил и забыл", но это уже совсем другая история.
    Вообще ~1300 записей о отелях и 32000 фотки (чисто url'ы с описаниями, наверно?) - не так много данных, скорее всего узкое место у вас - именно передача данных из PHP в MYSQL.
    Ответ написан
    6 комментариев
  • Как реализовать управление курсором мыши с сервера?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Если вопрос касается именно курсора мыши, то да, никак (без системного доп.софта), если же суть в просмотре действий пользователя и управлении страницей, то извратиться можно. Навскидку: просмотр реализуется, как в Яндекс.Метрике, управление теоретически можно реализовать посредством вебсокетов, отправляя странице инструкции куда нажать (click()), поместить фокус в поле ввода (focus()), задание значений полям ввода (кроме, наверно, поля пароля)
    Ответ написан
    Комментировать
  • Есть ли аналоги supervisord и в чем их преимущества?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Мы пользуемся supervisord для управления php-воркерами для Gearman.
    Работает стабильно, хотя есть такой вот недочет: редко бывает, что рестарт сервиса не срабатывает и воркеры не убиваются. Насколько критично, решает каждый сам, нас раньше бесило (при релизе кода рестарт делался и бывало что не срабатывало), сейчас пофиксили - убрали вообще рестарт, воркеры сам определяют, выкатился ли новый код и корректно себя завершают, супервизор стартует заместо завершившихся воркеров новые.
    Есть возможность в конфиге перенаправить из воркеров потоки вывода, чем с радостью и пользуемся для логирования.
    Ответ написан
    2 комментария
  • PHP-cкрипт не может подключиться к MySQL при работе из консоли и веб-сервера с одними и теми же настройками?

    Assargin
    @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    Не, ребят, так не пойдет. Даже в документацию заглянуть не удосуживаемся прежде чем писать такие вопросы.
    Привыкли что везде указывается в виде host:port? Неа.
    $mysqli = new mysqli('localhost', "user", "pass", "db", 3306);
    

    И локалхосты тут не при чем. И не спрашивайте, почему «оно работало хотя бы на консоли/на веб-сервере»
    Ответ написан