Задать вопрос
Ответы пользователя по тегу PHP
  • Почему возникают длительные задержки при ответе бота в Telegram?

    @rPman
    Боюсь что это проблема telegram а не ваша, когда я занимался анализом сообщений, задержки с момента отсылки сообщения и до получения их пользователем были до минуты (правда речь в моем случае идет об обычном клиенте, слегка модифицированным для работы с событиями, а не офицальных ботах, которые могут быть только админами/владельцами чата).
    Ответ написан
    Комментировать
  • Как реализовать динамическую базу данных(MySQL)?

    @rPman
    Шаблон должен иметь описание требуемых изменений в базе данных.

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

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

    Чуть сложнее со связями 1-к-м, на форме это сложные списки (список при выделении элемента заполняется часть формы новыми данными из связанной таблицы), но это точно так же описывается прямо в шаблоне.

    Точно знаю что существует несколько фреймворков для этого (например старенькая oracle forms уже тогда все это поддерживала), я их не изучал, но еще до их появления разрабатывал такую систему шаблонов и генератор, который полностью собирал базу данных, html-формы для просмотра, редактирования и поисковые формы.

    Из заметных сложностей, если заранее не продумать, сложно реализовывать изменение уже существующей базы (удаление таблиц, связей, полей).
    Еще проблемы создают любые отклонения от стандарта отображения форм, так как они выглядят очень однообразно, но в шаблоне можно продумать информацию о стилях (откуда брать html код для каждого элемента), порядке и местах размещения элементов на форме и прочее.
    Ответ написан
    Комментировать
  • Как мне выводить дату при выводе ошибки в php?

    @rPman
    добавьте вывод даты тут:
    php.net/manual/ru/function.set-error-handler.php

    но осторожно, этот калбек вызывается чаще чем хочется, поэтому настраивайте и проверяйте типы ошибок.
    Ответ написан
    Комментировать
  • Как работать репозиторию с API?

    @rPman
    С трудом понимаю что у вас за проблемы и с каким именно репозитарием?

    Разделите всю работу на атомарные операции, между которыми ваша база данных будет находиться в корректном состоянии, а за исполнение и контроль целостности в пределах атомарной операции пусть отвечает специально выделенная часть - например транзакционные базы данных, либо выделенный сервис, блокирующий одновременную работу с одними и теми же данными (есть блокировки на всю базу, на тип данных/таблицу и даже на отдельные объекты, это вопрос выбора инструментария)

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

    @rPman
    Если файловая система не была 'оттюнена', отключением опции noatime в linux (в windows есть аналог опции где то в реестре для ntfs), то у файлов будет корректно устанавливаться на дату последнего доступа к файлу.

    https://secure.php.net/manual/ru/function.fileatime.php
    Ответ написан
    Комментировать
  • Почему зависает консоль ssh при завершении демона php?

    @rPman
    вы уверены что консоль зависает?
    вы форкнули процесс, завершили первый, bash вывел приглашение ввода команд, после этого через секунду завершился второй процесс, и вывел сообщение - у вас теперь приглашение на предыдущей строке а курсор на новой чистой, и вы ждете чего то, хотя на самом деле bash у вас уже ждет ввода команды, вы ее можете вводить.

    когда нажимаете enter, bash просто выводит повторно приглашение ко вводу команд
    Ответ написан
    1 комментарий
  • Как реализовать статусы пользователя online/offline - PHP?

    @rPman
    Пожалуйста, поднимите у себя websocket, ресурсов это много не займет, зато возможности у вас появятся огромные, вы сможете не только точно знать момент, когда пользователь закрыл страницу или отключил интернет, но и сможете со стороны сервера эффективно передавать сигналы клиентам (чат например)
    Ответ написан
    2 комментария
  • Как сделать бесконечно выполняющийся скрипт php?

    @rPman
    php-cli
    Это отдельный, хоть и виртуальный пакет в операционных системах, имеет свой каталог с настройками расширений в /etc/, запускается приложение как и все скриптовые php имя файла плюс можно добавить первой строчкой по стандарту #!/usr/bin/php и поставить бит x на файл, тогда он будет запускаться как обычное приложение.

    cron - это не порядок, он подходит наоборот для периодических задач, которые отработали и завершили работу.

    По правилам, если вам нужен демон, который постоянно будет работать, то для этого необходимо создать для него файл службы, читать документацию по операционной системе или в /etc/init.d этот список все операционки тянут для совместимости до сих пор (там простой bash который запускает и останавливает вашу программу по команде start|stop).

    Будьте внимательны, если вы об этом не позаботитесь сами, ваш скрипт самостоятельно никто не перезапустит, если он вылетит по ошибке.
    Ответ написан
    Комментировать
  • Создание вероятности на php. Можете помочь?

    @rPman
    Алгоритмы псевдо-случайного вознаграждения в ммрпг вообще патентованные, от них зависит как долго игроки будут терпеть это безобразие.

    делайте как это делают в устройствах для гамблинга, игровых автоматах ит.п. - заранее просчитайте список выигрышей, с последующей проверкой на итоговые распределения, исключение вырожденных случаев и перекосов, и чтобы владелец игры не в накладе остался.

    Заранее считать - алгоритм проще чем последовательная генерация - проще проверить итоговое распределение.
    Ответ написан
    Комментировать
  • Как сделать что бы файл брался из предыдущего каталога?

    @rPman
    Настоятельно рекомендую не делать так, и передавать необходимый каталог вызовом специального метода в этом модуле. Ибо поддерживать такой код потом будет ад и мучение.

    p.s. попробуйте это get-included-files чтобы узнать все используемые файлы и debug_backtrace чтобы узнать какой в каком порядке вызван (не подключен! момент подключения можно получить только добавляя специальные вызовы в каждый важный файл)
    Ответ написан
    Комментировать
  • Как отсылать PONG?

    @rPman
    Вам точно нужно работать с websocket на таком низком уровне и реализовывать его самому?
    Попробуйте https://github.com/ratchetphp/Pawl и вообще пользуйтесь react и асинхронный код - это действительно круто.
    Ответ написан
    4 комментария
  • Как в PHP цикле выделить первые элемент?

    @rPman
    завести переменную $isFirst=true; а в цикле в конце установить ее значение на false
    Ответ написан
    Комментировать
  • Как сделать CRUD приложение средствами php для управления несколькими таблицами?

    @rPman
    Если вам не подходят готовые решения, а хотите сделать свой велосипед, попробуйте посмотреть в сторону метапрограммирования.

    Когда вместо того, чтобы описывать в коде структуру вашего проекта, которая с помощью фреймворка во время выполнения разворачивается в необходимые sql-запросы и html/js интерфейс пользователя (делая это каждый раз плюс очень много лишнего). Вы делаете почти то же самое, но пишите генератор всего кода и sql запросов по вашему описанию. Когда то очень давно я делал такую систему, когда по описанной модели данных (очень близкой к ЕР) с небольшими добавлениями по описанию графического интерфейса (типы данных и способы/ограничения по их редактированию), генератор компилировал в десятки/сотни php файлов, без каких либо требований к фреймворку, и достаточно эффективного кода, но позволял создавать очень быстро большое количество сложных интерфейсов по работе сданными (в основном это был поиск, просмотр и редактирование).

    Затем проект был заброшен, одно время я искал что то похожее, но все что находил было каким то переусложненным, лишенным бонусов метапрограммирования... и главное первоначальная задача - писать мало получать много, решалась слабо. Если уважаемое сообщество сможет ткнуть меня носом в существующие решени, я был бы очень рад.

    И еще, не про вашу задачу а вообще.
    Задумайтесь о React PHP, это целая парадигма в разработке асинхронных приложений, когда cli php приложение само является веб-сервером (в т.ч. и websocket), позволяет делать очень высокопроизводительные приложения.
    Ответ написан
    Комментировать
  • Как парсить сайты если сертификат битый?

    @rPman
    curl -k https://... что выдает?

    если выдает собственно контекст сайта - может грузить страницы с помощью функций curl_.., выставив опцию CURLOPT_SSL_VERIFYPEER = false

    file_get_conents будет посложнее заставить работать со сломанным сертификатом, у меня даже с не валидным не получилось (но там проблема уязвимости, новые версии php/openssl работать с ним отказывались), так же можно отключить проверку сертификата при использование socket_open...
    Ответ написан
  • Как разлогинить всех пользователей на сайте?

    @rPman
    На сервере у вас уже есть (должны) быть инструменты, для определения авторизации пользователя (не доверять же одним кукам), например сохраненный идентификатор сессии у пользователя в базе, вот эти данные и очищайте, одним запросом к базе на сервере.
    Ответ написан
    Комментировать
  • Возможно ли осуществить с сайта #2 вход на сайт #1 на простой форме входа?

    @rPman
    сайт #2, на котором проходит авторизация должен предоставлять механизмы (специальные запросы доступные только другим сайтам #1), сообщающие что вот такой то пользователь (идентификатор, создаваемый на старте авторизации еще в #1) ввел верные данные (и его роль админ/пользователь/гость...).
    Ответ написан
    Комментировать
  • Как сделать обработку формы без отправки?

    @rPman
    на onclick/onchange поля ввода (в зависимости, когда именно нужно делать запрос) ставите обработчик javascript которые используя ajax с помощью какой-либо библиотеки, тот же jquery (или более низкий уровень XMLHttpRequest без библиотек) а на сервере на этот запрос вы уже делаете sql запрос и возвращаете результат.

    Не рекомендую делать запрос на каждое событие, ставьте ограничение - не чаще чем раз в X секунд, например вместо прямого запроса делать его внутри setInterval, отменяя предыдущий.
    И помните что запросы ajax асинхронные, т.е. некоторые ответы могут прийти позже других (такие вы по логике не должны выводить, так как уже получили более новый)
    Ответ написан
  • Могут ли взломать сайт через форму отправки сообщений?

    @rPman
    Не фильтрованный ввод - это значит потенциальный css, это значит могут получить куки, в т.ч. администратора, если подсунуть ему ссылку с этим css (он должен по ней перейти, но обычно это не сложно, социальная инженерия очень хорошо работает), а дальше, имея пароль администратора обычно можно гораздо больше, и без взлома.

    p.s. проверьте, что произойдет, если данные формы отправить в виде GET запроса, а не POST.
    Ответ написан
  • Как вставить видео с автопроигрывание на фоне на сайт, но не через youtube?

    @rPman
    Положите свое видео в виде файла на свой сервер и заверните его в тег video

    Форматы и кодеки видеофайла смотреть тут:
    https://ru.wikipedia.org/wiki/HTML5_video
    https://developer.mozilla.org/ru/docs/Web/HTML/Под...

    p.s. легальность использования того или иного кодека, то еще развлечение, но в вашем случае скорее всего теоретическое
    Ответ написан
    Комментировать
  • Почему PHP Simple HTML DOM Parser прерывает вывод сразу после слова на русском языке?

    @rPman
    ни разу не было проблем с этой библиотекой и русским языком (utf8)
    Ответ написан