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

    Такого рода вещи следует безусловно считать на сервере для гарантии от жульничества, обрывов связи и т.п.
    В сущности вам нужен неблокируемый таймер. Есть несколько способов реализации этого, но почти все костыльные в силу синхронности парадигмы программирования под php.

    Однако, есть один способ, который позволит сделать полностью асинхронную обработку, только это потребует кардинального пересмотра всего серверного приложения.Есть такая библиотека libevent и обертка под названием reactPHP.

    Я недавно решал проблему в своем проекте с отложенным отключением пользователей при обрыве websocket-соединения и мне данное решение помогло.

    Суть в том, что приложение строится как цепочка callback-ов типа onOpen, OnMessage, onClose, которые вешаются на event loop. Сооветственно, на него же можно повесить и таймеры при обработке этих глобальных callback-ов.
    Например:
    ...
    public function onClose(Connection $connection)
    {
    	...
    	$loop = MightyLoop::get()->fetch();
    
    	$detacher = function() use ($user) {
    		$clients = UserCollection::get();
    		$clients->detach($user);
    
    		$this->notifyOnClose($user, $clients);
    	};
    
    	if ($user->getAsyncDetach()) {
    		$timer = $loop->addTimer(30, $detacher);
    		$user->setTimer($timer);
    	} else {
    		$detacher($user);
    		$user->getConnection()->close();
    	}
    	...
    }
    Ответ написан
    Комментировать
  • Вопрос по websocket

    думаю поможет вот это, если вы связались с websockets
    Ответ написан
  • Что выбрать для написания web-страницы с авторизацией и работой с базой данных?

    Можно и на PHP спокойно всё это сделать. В принципе все перечисленные языки имеют подходящий функционал. Поэтому остается только руководствоваться наименьшей стоимостью разработки и поддержки.
    Ответ написан
    1 комментарий
  • PHP и Linux: в чем плюсы?

    Просто с Linux меньше граблей и костылей.
    Ответ написан
    Комментировать
  • Как найти комбинацию из любого количества элементов подмассива requests, сумма значений которых будет максимальна близка, либо равна значению max_sum?

    Ваша задача это ни что иное как интерпретация "задачи о ранце"
    Полистайте, там есть алгоритмы решения.
    Ответ написан
    Комментировать
  • PHP 5.5, состоит ли строка только из ASCII символов?

    Для русских букв попробуйте добавить модификатор в регулярку, то есть
    ~^[[:ascii:]]+$~u
    Также стоит обратить внимание на внутренние кодировки в настройках, например:
    setlocale(LC_CTYPE, "en_US.UTF8");
    setlocale(LC_TIME, "en_US.UTF8");
    mb_internal_encoding('UTF-8');
    mb_regex_encoding('UTF-8');
    Ответ написан
  • Как запустить Socket сервер PHP на хостинге или сервере?

    По разному бывает. Может ему надо настроить БД. Может проксирование через nginx (у WebSocket-ов такое возможно). Разрешить порты в фаерволе.
    Запускается очевидно через nohup <init.php> &
    Ответ написан
    Комментировать
  • Почему PHP-скрипт тормозит при первом запуске, но «летает» при последующих?

    Тут два варианта. Либо вы нагрузили чрезмерно сайт какими-то плагинами, которые генерируют огромную кучу запросов в БД, либо тормозной хостинг. Кэширование отчасти спасает ситуацию, но это как лекарство от симптомов, а не болезни.
    Ответ написан
  • Какой выбрать алгоритм сортировки популярного контента?

    На эту тему есть много очень статей (по крайней мере на Хабре я точно натыкался на такие).
    Лично мне самое простое, что приходит на ум, это сделать весовые коэфициенты, величина которых будет зависеть от позиции статьи в рейтинге (чем меньше просмотров - тем больше вес).
    Дальше можно усложнить алгоритм, заменив простой счётчик просмотров на хронологию показов и используя это распределение для более взвешенного ранжирования, чтобы старые статьи не мешали продвижению новых.
    Ответ написан
  • Как можно оптимизировать мой код php+mysql?

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

    Вам возможно следует поменять парадигму приложения на событийно-ориентированную.
    Тогда вам не потребуется обновлять по таймеру представления и создавать избыточную нагрузку на сервер.
    Это значит, что возможно вам придется копать в сторону long polling, Ratchet или же вообще поступить радикально и перейти на node.js
    Ответ написан
    Комментировать
  • Какой выбрать язык для создания сайтов?

    Недавно знакомый тоже стал меня распрашивать на тему выбора php или что-то ещё для сайтов. Подумав я пришёл к выводу, что по большому счёту можно выделить несколько основных критериев для сравнения:
    1) Парадигма программирования синхронность/асинхронность.
    2) Количество готовых решений (gems, composer и т.п.).
    3) Поддержка языка сообществом и ментейнерами.
    4) Лаконичность синтаксиса.
    5) Простота рефакторинга.

    Если рассматривать php, то:
    1) синхронная парадигма, хотя есть попытки сделать некоторые вещи асихнронным, типа проектов phpDaemon или например вызовы mysqlnd;
    2) на Packagist сегодня уже достаточно много накопилось готовых пакетов, чтобы не изобретать всюду велосипед + зрелые фреймворки;
    3) язык существует уже более 10 лет, а скорость развития за последние 3 года выросла на порядок;
    4) с лаконичностью не всё гладко, есть избыточная многословность, но есть и похуже языки в этом плане, типа Objective-C
    5) вполне сносный рефакторинг, в этом отношении у руби должен быть похуже, поскольку он более "динамичный", но у Java на голову выше из-за статической типизации.

    В общем, отток народа из PHP в последние лет 5 обусловлен преимущественно тем, что появились достойные альтернативы + было очень вялое развитие языка и большое количество проектов с legacy кодом.
    Ответ написан
    2 комментария
  • Какая нужна скорость для установки сервера с социальной сетью?

    Я юзал почти год веб-сервер с чуть менее десятком сайтов на нём, сидя на Билайне с внешним ip. Уников в общей сумме на 1000 в сутки было, запросов где-то порядка 10000. Проблем с провайдером не было. Правда как нашёл Digital Ocean понял, что держать дома сервер перестало быть целесообразным. Зартаты на энергию + внешний ip были больше, а производительность несущественно ниже.
    Ну а про ненадёжность электросети, из-за которой может отключиться не только своё оборудование, но и провайдерское в доме, думаю и говорить не стоит.
    В любом случае начинать стоит с VPS с возможностью масштабирования, а по мере роста нагрузки уже докупать ресурсы. Когда нагрузка становится реально высокой - вот тогда может и стоит подумать о выделенной железяке в датацентре, своей или в аренду.
    Ответ написан
    Комментировать
  • Перезапись значения переменной в php файле?

    если это сторонний код (внешняя библиотека) отрефакторите, чтобы значения параметров брались из более подобающего места и сделайте pull request
    Ответ написан
    Комментировать
  • Как проверить input ajax запросом к php скрипту?

    Навесить javascript событие. onchange хотя бы.
    Ответ написан
    Комментировать
  • Как правильно изучать PHP?

    Даже не знаю что посоветовать из "почитать", чтобы "стать".
    Лучше всего пойти хоть джуниором, но в команду, где используют best practises.
    Можно много чего почитать, что-то безусловно полезно, но что-то будет слишком рано и не будет понятно в правильном контексте, пока с подобными проблемами на практике не столкнулся.
    Например, я знал, что тесты это хорошо, но понял их важность только начав работать над сложным проектом.
    Знал про полезность ООП, но прочувствовал как правильно с ним работать и его мощь тоже не сразу. Можно прочесть например умную книжку по ООП и начать фигачить всякие "фичи" там, где им вообще не место.

    Во многом способствует росту заданная высоко планка качества кода в проекте + code review.
    Из того, что наиболее всего мне пригодилось это была книга Robert Martin "Clean code", достаточно 1 раз прочесть, чтобы усвоить несколько полезных принципов, в частности понимание хорошо читаемого кода. Ну и в качестве книжки-справочника что-нибудь из разряда "паттернов проектирования ООП"
    Ответ написан
    9 комментариев
  • Как убедить руководство сменить платформу разработки проекта, полностью переписав его?

    У меня сложилось впечатление после прочитывания комментариев, что денег у компании сейчас мало, руководство зажимается. Так зачем же сейчас менять платформу, переписывать проект фактически с нуля, если это приведёт к ещё большим издержкам? Ну допустим, вы решили переписывать. Какова оценка трудоёмкости задачи по времени? Будут ли при этом ещё написаны тесты? Есть ли они сейчас? Если нет тестов, то на определенном уровне сложности проекта пробуксовка неизбежна. Изменение кода будет вести к непредсказуемым последствиям в поведении приложения.
    Как уже заметили, надо либо подстегнуть мотивацию разработчика, либо менять его. К слову, зарплата в 1000$ для хорошего разработчика это не деньги, ради которых стоит напрягаться. Наверняка есть ещё другие проекты и он отдаёт приоритет тому, где больше платят или более интересно.
    Ответ написан
    2 комментария
  • Какой выбрать php-фреймворк для простых и средних проектов?

    Смотря какие именно проекты. Если допустим делать сайты малой и средней сложности наверное склонился бы к Yii2. Если же хочется освоить универсальный инструмент на все случаи жизни, то я бы предпочёл Symfony2.
    А так, по воле судьбы, работаю сейчас с форком onPHP. Мне нравится, очень мощный и гибкий фреймворк, но вряд ли он годится для быстрого создания сайтов с нуля, если только самому не сделать какую-то общую базу. То есть он ближе к Symfony, чем к Yii, но и делаю я не сайт.
    Ответ написан
    Комментировать
  • Хватит ли 4000$ на разработку CMS?

    Не понятно какие требования предъявляются к проекту.
    К примеру, я не уверен, что можно уложиться в нужную сумму, если подойти серьёзно к делу:
    - разработка архитектуры и обкатка юзабилити (куча времени требует на обсуждение и приход к компромиссам);
    - тесты (юнит и функциональные);
    - разработать API, например для мобильных устройств или front-end приложения (сюда ещё тогда добавить и API-тесты);
    - иметь хотя бы 2-х senior-разработчиков для качественного кода и взаимного код-ревью;

    Я оцениваю работу где-то на 2-3 месяца и сумму порядка 750к рублей на всю команду (2 разработчика + дизайнер).

    А если целиться на меньшее, то и смысла нет затевать сыр-бор, проще взять готовую CMS.
    Ответ написан
    Комментировать
  • Какие CMS являются современными с точки зрения архитектуры?

    Главная задача CMS следует из её названия - управление контентом сайта.
    Действительно, к самой верстке/дизайну клиентской части это не имеет никакого отношения. Только к админской. Если CMS отвечает вашим требованиям, связанным с управлением контента и доработки функционала, разумеется переводя на деньги, то смысла менять нет.
    Переход на другую CMS - это очень ресурсоёмкая задача. Окупится ли она в перспективе в пересчёте на разницу в стоимости поддержки старой и новой - вам решать.
    Ответ написан