Профиль пользователя заблокирован сроком с 17 мая 2024 г. по 17 мая 2025 г. по причине: нарушение правил сайта
Ответы пользователя по тегу PHP
  • Какие знания/нвыки необходимы для написания своего API?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1) Вопрос использовать ли вообще ООП или нет - он очень условен.
    Без ООП не работает любой современный фреймворк.
    Поскольку MVC таки использовать надо - соответственно ооп у вас будет автоматом)

    2) По поводу Symfony - абсолютно без разницы на каком именно фреймворке Вы пишите свой код.
    Symfony мне кажется более сложен для начинающего, попробуйте Yii2 или Laravel.
    Опять же повторюсь, это не принципиально. Можно взять любой микрофреймворк - это будет даже полезней с точки зрения развития начинающего разработчика.

    3) API это по сути обычный набор скриптов, отличающийся от обычных страниц тем, что в web страницах вы отдаете html - а в API вы отдаете JSON/XML/что_то_ещё (я лично советую использовать JSON по целому ряду причин, но вопрос в целом холиварен)
    REST API (опять же дефакто массовый стандарт) - это договоренность о некоторых базовых принципах, по сути о форматах запроса, ответа, об отсутствии состояний (stateless)
    Возвращаясь к пункту 2 - многие фреймворки дают автоматизацию в построении rest api, например вот свежая статья с примерами по Yii2 habrahabr.ru/post/240149

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

    4) В любом случае - начните с написания документации для самого себя:
    Какие у вас есть сущности(ресурсы в терминологии rest), опишите их.
    Какие действия над ними может производить клиент.
    По каким условиям клиент может запрашивать фильтрацию каких сущностей.
    Есть ли у вас необходимость передавать сущности не целиком (тоже холиварный вопрос)
    итд

    Прошу прощения если получилось сумбурно, писал одновременно с утренним кофе :)
    Ответ написан
    Комментировать
  • Как реализовать обновление базы данных на андроиде с сервера?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Если у Вас база обновляется редко, целиком и уже есть инструменты для этого - то можно и файлик на сервер заливать.

    Но классическое решение - сделать REST api, которое будет отдавать контент в мобильное приложение. Заодно в рамках api можно сделать версионность, и отдавать не все данные, а только то что изменилось.
    Ответ написан
    Комментировать
  • Как правильно натягивать страницу на CMS?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Поскольку в общем случае верстку и натягивание на cms делают разные люди - то верстальщик делает html макет в котором какие то тестовые данные забиты статикой, а тот кто натягивает уже нарезает это на кусочки, вставляет вывод из базы итд.
    Ответ написан
    Комментировать
  • Как сделать редирект в контроллере с помощью ajax?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. Почитайте основы клиент-серверных технологий вообще phpfaq.ru/na_tanke

    2. Ответ нет. Редирект затронет очевидно же только ajax запрос.
    Если вы хотите редиректнуть уже загруженную страницу - вам надо это сделать из js.
    Ответ написан
    Комментировать
  • Как определить узкое на сервере?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Раскидайте по коду таймеры, далее по вкусу - можно их писать куда нибудь, можно просто паралельно с тестом рукам открыть код и посмотреть результаты.
    По крайней мере будет понятно где тормозит. Сейчас явных для решения явно не достаточно.

    Гипотетически (версия из головы) может например быть какой то кривой кеш, который захлебывается, постоянно перегенерится - вот и загрузка 100%

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

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вопрос с кучей придуманных ограничений.
    1. Почитайте про MVC. И код понятнее станет и читабельнее, и упоминаний страниц не будет.
    2. Если Вы хотите без перезагрузок - вам нужно написать js код, который при изменении формы будет слать ajax запрос и соответственно рендерить его на страницу.
    api.jquery.com/jquery.ajax в самом конце примеры
    Ответ написан
  • Как правильно разработать легкомасштабируемую платёжную систему?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1. Скрипт на крон - однозначно плохая идея. Более правильная история - постоянно работающий скрипт который из очереди получает очередную задачу. Отличный вариант для организации очереди rabbitmq

    2. Слабая связанность компонент это хорошо. В вашем случае однозначно api (не очень правда понимаю метания от php к java но дело Ваше. пишите на том, что лучше знаете) + расширяемые апи для внешних интеграций + интерфейсы цепляемые к апи.

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

    3. С точки зрения быстродействия - Вы достаточно быстро упретесь в базу. Соответственно надо сразу думать о шардировании данных, о том как система будет себя вести в случае выхода из строя одной из задействованных в транзакции нод итд.

    4. Вам важна data consistency. Сразу думайте про железо. Любые сервера горят. Брендовые сервера горят точно так же как и не брендовые. С учетом п3 - я бы делал полностью независимые друг от друга ноды, с физическим дублированием внутри ноды, и привязывал каждый счет к одной ноде.

    5 [философский] Поймите важный момент - без ОЧЕНЬ серьезных инвестиций в маркетинг, проекты не взлетают. Если бы эти инвестиции были - Вы бы тут не писали (не в обиду). Соответственно вероятность того что к Вам внезапно придет огромный поток транзакций - стремится к нулю. К тому моменту когда Вы раскрутитесь - Вы успеете 5 раз сменить архитектуру проекта. Нельзя иметь одну архитектуру у стартапа собранного одним человеком, и у проекта с высокими HL/HA.
    Пишите на чем нравится, у Вас будет куча времени что бы переписать узкие места например на C.

    6 [юридический] Вы в курсе что Вам нужна пачка лицензий на осуществление деятельности в качестве оператора электронных денег и денежных переводов без открытия банковского счёта? :)

    PS Я хочу верить что Ваш вопрос - это задачка для саморазвития. Иначе я не представляю себе что это за система платежная, которую делает один человек, спрашивающий совета как делать такие штуки (опять же не в обиду Вам ) :)
    Ответ написан
    Комментировать
  • Почему не работает __autoload?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Такие вещи надо смотреть поэтапно:

    1. Судя по всему у вас просто не срабатывает автолоад. Попробуйте явно её зарегистрировать в стеке php.net/manual/ru/function.spl-autoload-register.php

    2. Смотреть что у вас оказывается в path, проверять руками реально ли есть такой файл.
    Учтите что на *nix хостингах (в отличии от домашнего windows) регистр символов ЗНАЧИМ

    3. Мне кажется странным делать echo в случае ошибки. Логичнее кидать exeption и обрабатывать как то.
    Ответ написан
    2 комментария
  • Почему не открывается PMA?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    посмотрите лог php ошибок сервера
    Ответ написан
    Комментировать
  • Как с помощью класса phpmailer указать email адрес кириллицей?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Нет никаких русских доменов. На самом деле это xn--e1aybc.xn--p1ai
    Попробуйте указать info@xn--e1aybc.xn--p1ai в качестве адреса отправителя.
    Далее читать про punycode

    PS и да, отправить почту на info@тест.рф скорее всего ни у кого не получится.
    Ответ написан
    Комментировать
  • Как блокировать депозит на карте клиента до прихода клиента в офис?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Это называется холдирование.
    Вам нужен платежный агрегатор которые это поддерживает.
    Навскидку это умеют dengionline.com/dev/protocol/hold и https://www.ruru.ru/
    С деньгионлайн не работал, с ruru работаем сейчас.
    Ответ написан
  • Зачем этот код в Яндекс.Метрике?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Я не понимаю при чем тут яндекс.метрика, но что кривовато старался объяснить Frunze Production понимаю легко.

    Они хотят что бы отправляемые с сайта письма в конце содержали текстовки кук platform, num и ip, и все это хозяйство дублировалось на почту baaaa.-.@lptracker.ru

    ( кстати это хреновый вариант отслеживания писем, т.к пользователь видит факт нескольких адресатов. Лучше добавлять в hidden copy stackoverflow.com/questions/11963494/use-phps-mail... )
    Ответ написан
  • Почему не передаются параметры в метод php?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Не понял вопрос. Ваш код работает, 123 выводит.
    Если сделать
    <?php
    class Myclass 
    {
        function mymethod($par3,$par4) 
        {
        include 'add/'.$par3;       
        }
    }
     
    class MyClass2
    {   
     
        function action_index() {
            $this->var1 = new Myclass();
            $par1 = 'ex3.php';
            $par2 = 123;
            $this->var1->mymethod($par1,$par2);
     
        }
    }
    $child = new MyClass2();
    $child->action_index();

    и ваш ex3.php
    <?php
        echo $par4;
    ?>

    То опять же все работает, как и должно.
    Ответ написан
  • Как отправить свои переменные в Яндекс.API?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вы используете какую то библиотеку YandexMoney.
    Смотрите на её код.
    Вообще в описании API свои параметры передавать разумеется можно.
    api.yandex.ru/money/doc/dg/reference/request-payme...

    PS
    $q="UPDATE payment SET status=1,code='$code' WHERE id='$_GET[id_pay]'";
    			mysql_query($q);
    За это хочется убивать если честно.
    ВСЕГДА обрабатывайте переменные. ВСЕГДА.
    Хотя бы вот так
    $q = 'UPDATE payment SET status=1, code="' . mysql_real_escape_string($code). '" WHERE id= "' . mysql_real_escape_string($_GET[id_pay]) . '"';

    а лучше конечно использовать mysqli_
    Ответ написан
  • Поиск по сайту. Где ошибка в htaccess?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    1)
    <input type="text" placeholder="поиск" name="searchword" method="$_GET">
    Правильно пишется method="GET"

    2)
    RewriteRule ^search/ /search.php?%{QUERY_STRING} [L]

    лучше писать
    RewriteRule ^search/? /search.php?%{QUERY_STRING} [L]

    3)
    RewriteRule ^search/([A-Za-z0-9-]+)$ /search.php?page=$1&searchword=$2 [L]

    У вас в регулярке стоит только 1 выражение - а мачится два.
    Не очень понял что вы хотите получить, но могу предположить что правильно будет
    RewriteRule ^search/([A-Za-z0-9-]+)/?$ /search.php?page=$1 [QSA,L]
    Ответ написан
  • Как подключить paypal на сайт?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Вот курсы https://developer.paypal.com/docs/classic/training/
    Вот примеры кода https://developer.paypal.com/docs/classic/lifecycl...
    Что именно там не понятно?
    Ответ написан
    Комментировать
  • Как снять ограничение сервера на длину POST запросов?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    на выбор:

    php.ini
    post_max_size=200M
    upload_max_filesize=200M


    или

    .htaccess
    php_value post_max_size 200M
    php_value upload_max_filesize 200M


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

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Если вы делаете какую то сугубо техническую рассылку к примеру по своим собственным сотрудникам внутри вашего домена - можно использовать второй вариант если очень хочется. (хотя я все равно не вижу в нем смысла)
    Во всех остальных случаях - первый без вариантов.

    Письма с большим количеством адресатов во первых активно режутся спам фильтрами, во вторых как то не очень правильно раскрывать персональные email пользователей.

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

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Как правильно написали @voiddancer и @nazarpc абсолютно не важно где у вас лежит файл на диске. Это html. Он разбирается браузером на стороне клиента. Он знает url по которому запросили страницу и больше не знает ничего.

    Ссылки с "/" в начале загружаются от имени домена.
    Ссылки без - от текущего пути.
    Т.е если у Вас url страницы mysite.ru/partners
    то "/css/all.css" будет искаться mysite.ru/css/all.css
    а "css/all.css" - mysite.ru/partners/css/all.css
    Собственно это все можно легко посмотреть в консоли браузера.

    Если у Вас есть точное понимание что сайт всегда будет жить на отдельном домене - пишите ссылки вида "/css/all.css".
    Если такого понимания нет - заведите переменную $basepath = 'http://mysite.ru' в конфиге сайта и в php генерите абсолютные ссылки: $basepath . '/css/all.css'

    Использовать тег base я бы не рекомендовал, т.к во первых мне кажется неправильным правка html макетов при смене домена, а во вторых я многократно сталкивался с его странным поведением в различных браузерах.
    Ответ написан
    Комментировать