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

    @rPman
    С не латиницей работать надо с помощью штатного расширения mbstring
    php.net/manual/ru/book.mbstring.php смотрите методы mb_ereg_... само собой при указании верной кодировки.

    Так же попробуйте штатный модификатор у регулярных выражений u (при использовании utf8)
    php.net/manual/en/reference.pcre.pattern.modifiers.php
    Ответ написан
    Комментировать
  • Как скрыть PHP код на сервере при условии что надо его править?

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

    Если запускаемое приложение может работать без доступа к сети, то можно делать запуск в контролируемом окружении (виртуальная машина или lxc/docker контейнер), пусть он там что угодно делает, по окончании работы забираем ожидаемый результат и откатываем изменения.

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

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

    В самом простом случае, можете реализовать ВЕСЬ платный функционал на сервере, а на клиенте только интерфейс (вернуться во времена http rest архиетктуры, ну с оглядкой на эффективность и отзывчивость).
    Ответ написан
    2 комментария
  • Как заниматься разработкой на удалённом сервере на DigitalOcean?

    @rPman
    Под php можно разрабатывать и под windows, я долгое время вообще сидел исключительно в far manager без отладчика и т.п. Плюс есть куча IDE которые так же пойдут под windows.

    Вы всегда можете подключиться к удаленной машине терминалом, в т.ч. графическим, и работать как на своей, если скорость и латенси интернета позволит (для консольного вам хватит ssh, тот же putty, для gui - установите на сервере freenx, лучший по требованиям к сетевому трафику, если вам игры не надо запускать само собой)

    Если вас зачем то интересует linux окружение для работы с машины на windows то начните сygwin.org удобный пакетный менеджер, практически все утилиты из мира linux портированы под windows, режим portable т.е. не требует администраторских прав и т.п.

    Чуть менее качественно linux окружение портировано в mingw (msys), в основном там это сделано для возможности сборки приложений из исходников, заточенных под linux на windows. Но не думаю что вам это актуально при использовании php.

    Если вам все еще будет этого недостаточно, в win10 недавно встроили linux подсистему, что то типа wine наоборот, где бинарники, собранные под linux той же архитектуры что у вас windows, обычным способом запускаются под windows. GUI нет, возможно придется искать и главное настраивать xserver самому.

    Если и этого не хватает, а virtualbox тормозит (например очень старая машина без поддержки аппаратной виртуализации), и если у вас x86 версия windows (к сожалению x86_64 не поддерживается и не будет, проект считай загнулся, зато работает даже на winxp) то вы можете попробовать colinux.org это считай openvz/lxc/user mode linux из мира linux только под windows но для запуска именно linux. Скорость работы этой виртуалки практически совпадает с нативным запуском приложений (виртуализации не происходит, только подмена вызовов), особенно это заметно там где много вычислений а не системных вызовов. К сожалению там будут работать только старые версии linux, но попытка не пытка.
    Ответ написан
    Комментировать
  • Хочу попробовать асинхронность PHP 7 с помощью REACTPHP, нужен совет?

    @rPman
    Асинхронность может помочь, если вы внутри foreach делаете запрос куда-то наружу и ждете... ускорение в данном случае получите только за счет того что для следующего запроса ждать результат предыдущего не будете, т.е. у вас в цикле должно будет запуститься асинхронные запуски для каждого элемента, а после списка (скорее всего по завершению работы), начнут вызываться коллбеки (т.е. соответствующие методы промис) с полученными результатами.
    Ответ написан
  • Время ответа сервера с file_get_contents?

    @rPman
    Пользуйтесь методами curl_... где вы сможете проконтролировать гораздо больше, если совсем хочется счастья, берите любую http socket библиотеку (например из react окружения).

    Постарайтесь выяснить, откуда появляются задержки, например локально провайдеры могут создавать их специально или нет (у меня были внезапные проблемы с php curl_multi), которых не было в обычном curl_... и только у конкретного провайдера в случайные часы суток).
    Ответ написан
    Комментировать
  • Вставка изображения на задний план gif-анимации. Как такое возможно реализовать?

    @rPman
    первый же запрос в гугл
    html transparrent background gif animated

    https://www.sitepoint.com/community/t/how-would-i-...
    Ответ написан
    Комментировать
  • Узнаем кол-во строк в нескольких базах?

    @rPman
    Если баз МНОГО то не только считайте количество тригерами, но и делайте запросы в базу асинхронными, иначе даже после десятка баз последовательный запрос будет выполняться секунды.

    Еще есть практика кеширования данных и инвалидация кеша при возникновения событий (тригерить события notify на клиент - методы есть), т.е. делать запрос только в те базы, по которым пришел notify (тут же и проверять).

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

    @rPman
    Если предложения выше вам не помогут, и вам нужно весь файл зачем то считать в память, то воспользуйтесь 64-битной версией php, поправив в php.ini
    memory_limit = 8192M

    p.s. если ваш файл - картинка, смело умножайте на 4 ваши требования по оперативной памяти
    Ответ написан
    Комментировать
  • Как сделать кириллицу читабельной в HTTP_REFERER?

    @rPman
    вместо помещения в тело письма текстовой ссылки, помещайте ее html воплощение
    <a href='http://ссылка'>текст, который будет виден в письме, подчеркнутым как ссылка</a>
    в тексте вы можете писать что угодно и как угодно, лищь бы заголовки письма и в head соответствовали кодировке
    Ответ написан
    Комментировать
  • Как отправить 2 post запроса одновременно?

    @rPman
    Найдите в вашем коде код отправки ajax и тупо продублируйте вызов обычным копированием (скорее всего проще будет вместо анонимных методов сделать временно именованные а саму строчку с кодом ajax продублировать.
    Ответ написан
    Комментировать
  • Как обойти JS скрипт, мешающий спарсить страницу?

    @rPman
    Смиритесь, пол интернета уже javascript based.

    Загружать страницы headless браузерами, компоненты браузера есть по до все известные языки програмирования и платформы, основанные либо на webkit (например у java webengine) либо на основе firefox (mono webbrowser) либо iexplore (.net - webbrowser).
    p.s. php - https://github.com/chrome-php/headless-chromium-php

    Страницу получать либо прямо из языка програмирования, запрашивая webengine.document.innerHTML или делать скрин картинки, либо инжектить javascript на страницу и работать с ней как вам заблагорассудится, в т.ч. эмулировать нажатие кнопок и вообще пользователя.
    Ответ написан
    3 комментария
  • Размещение Node.js и PHP приложения на одном сервере?

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

    web-клиент -> web-севере на php -> файл на сервере -> nodejs -> база данных (отсюда php сервер отдаст его клиентам)
    Ответ написан
    1 комментарий
  • Есть ли бесплатный хостинг для PHP WebSockets?

    @rPman
    Хостинга именно php websocket вы не найдете, такого SasS скорее всего нет
    но из дешевых решений, вам достаточно не обслуживаемого linux vps за 1$ в месяц или даже дешевле

    гуглить low cost vps, например lowendstock.com

    запустить свой php websocket сервер из командной строки screen особых знаний linux не понадобится, а для тестов сойдет.
    Ответ написан
    1 комментарий
  • Как проверить, что каждые 0.5 секунд приходит запрос?

    @rPman
    Выкиньте из головы эту тупую устаревшую rest идеологию.
    Она создает экспоненциальную (n^2 от количества клиентов) нагрузку на сервер и имеет лаг реакции.

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

    @rPman
    Укажите в html файле в заголовке head тег <meta charset="utf-8"> (или в какой у вас кодировке файл на самом деле).
    p.s. вероятность нарваться на 100500 проблем с таким 'методом создания' файла эксель - очень высокая.
    Сделайте как надо (генерируйте файл по его формату, используя для этого правильные инструменты), не создавайте себе и другим проблем в будущем.

    p.p.s. начиная примерно с 2005 года, формат файлов excell - xlsx. Это на самом деле zip архив с файлами, многие из которых текстовые xml, работать с которыми очень даже просто без библиотек.
    В подавляющем большинстве случаев вам достаточно создать шаблонный документ и редактировать своей программой один файл, описывающий данные. Поверьте, он очень простой. Проблемы начинаются, когда у вас формулы, бинарные файлы, внешние ссылки на данные и т.п.
    Ответ написан
    Комментировать
  • Создание базы данных для накопления опыта, как реализовать?

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

    Все что вы описали сделать можно, и не обязательно на php и базах данных но если речь идет именно о них то вперед. Так как вы делаете для себя, вам не нужны никакие mysql/postgres и т.п., достаточно простой sql базы данных на основе sqlite - достоинство не надо ничего устанавливать и настраивать, база даных = файл, поддержка php из коробки и т.п. (не надо делать свою базу данных на файлах в своем формате, этот путь в никуда и пользы вам не принесет, но если у вас есть неизменяемые данные, которые не надо менять из интерфейса, такими бывают некоторые справочники например, то можно воспользоваться форматами данных, предлагаемых php - json, serialize, или var_dump т.е. формат php, когда данные описаны прямо в коде в виде массива)

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

    @rPman
    В одном месте, одно из требований у меня было - подготовить deb пакет со скриптами первичной установки и обновления (там не было классической базы но смысл в том чтобы и ее тоже при необходимости обновлять), причем необходимо было гарантировать что deb корректно обновит с любой предыдущей версии (это легко решается последовательным исполнением скриптов каждой промежуточной версии, не так эффективно зато однозначно). Откат на предыдущую версию не требовался.
    Ответ написан
  • Мнгновенные оповещения ajax Long Polling && php?

    @rPman
    Как реализовать серверную часть проверки бд, на новые оповещения для пользователя?
    не все базы данных предоставляют такой функционал, например postgres позволяет, используя sql выражения LISTEN и NOTIFY, и соответствующий метод на клиенте pg:
    php.net/manual/ru/function.pg-get-notify.php

    К сожалению php не event oriented язык програмирования (только сокеты позволяют красиво все делать асинхронно), то либо вы вызываете pgsqlGetNotify с 1 или 0.1 секундным интервалом в цикле, проверяя наличие notify либо слушаете свой сокет асинхронно в своем приложении, а в соседнем в цикле с 10-30 секундным ожиданием ждете событие и отправляете ответ в этот сокет.

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

    чтобы отправить ответ на сторону веб-клиента, вы вынуждены будете либо использовать long pooling (устаревшая технология, с кучей проблем) либо посмотреть примеры по работе с websocket и научиться наконец красивому event-based программированию, посмотрите примеры сервера websocket на php (на стороне клиента все еще проще)
    socketo.me/docs/hello-world
    В этом случае ваше php приложение становится полноценным веб-сервером (вебсокет например), который все еще не рекомендуют выпускать в интернет напрямую, и устанавливают между интернетом и им классивческий ngnix или apache.

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

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

    p.s. nodejs любят за то что асинхронных подход там используется изначально
    Ответ написан
    Комментировать
  • Сжатие картинок хранящихся на шареде?

    @rPman
    Приложения можно ставить и без root, в локальную директорию, чуть более сложно но реально, примерно так
    https://askubuntu.com/questions/339/how-can-i-inst...
    Ставьте imagemagic и пользуйтесь решением выше

    Приложение на php gd, меняющее разрешение картинки занимает 4 строчки плюс управление
    php.net/manual/ru/function.imagecopyresized.php
    Ответ написан
    Комментировать