Фуллстек web-разработчик из Санкт-Петербурга. Работаю со стандартным стеком технологий (PHP 5.6 , 7+, JS, CSS), стремлюсь быть в курсе актуальных технологий, языков и решений. В планах освоить альтернативнй язык для бэкэнда или Swift для написания под iOS. Работаю с контейнерами LXC и выполняю задачи DevOps.
Контакты
Местоположение
Россия, Санкт-Петербург и область, Санкт-Петербург

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (23)

Лучшие ответы пользователя

Все ответы (36)
  • Постоянно запущенный скрипт на PHP, как реализовать?

    eXcNightRider
    @eXcNightRider
    FullStack Web Developer | DevOps
    Привожу живой пример из личной продакшн практики. PHP-CLI скрипт как запускаемое приложение
    Начальные условия:
    Наличие GNU Linux (в моём случае это Debian)
    Установленные пакет php, php-cli, остальные по вкусу и зависимостям
    В качестве таймера используется класс React\EventLoop\Factory
    1. Создаём пустой файл, можно без разрешения (например daemon), открываем в текстовом редакторе
    Важно, чтобы в начале была строка #!/usr/bin/php -q
    2. Пишем
    #!/usr/bin/php -q
    <?php
    ini_set("display_errors", 1);
    error_reporting(E_ERROR);
    require "/var/project/vendor/autoload.php";
    require '/var/project/bin/cli_config.php';
    use Ratchet\Session\SessionProvider;
    
    $loop = React\EventLoop\Factory::create();
    //вызовы $loop->addPeriodicTimer можно ставить в нужном количестве, первый параметр - количество секунд
    $loop->addPeriodicTimer(120, function(){
    //код здесь будет выполняться каждые 120 секунд
    });
    //если нужен повторяющийся цикл 
    //$loop->run();
    //а если нужен один раз на вызов
    $loop->tick();

    3. chmod a+x /www/project/bin/daemon - даём права на выполнение
    4. запускаем ./daemon будучи в папке с файлом. Если ошибок нет, всё будет работать
    5. А ещё скрипт можно установить как демон в systemd и управлять с помощью /etc/init.d/daemon.service (start|stop|restart) и есть ещё bash-скрипт который будет держать службу на контроле и перезапускать если что, так как не всегда ошибка возвращает код и systemd считает, что процесс не упал, а его остановили, но это уже другая история

    6. Для решения задачи "Требуется по запросу юзера (нажал кнопку) вести отсчет таймера от 120 секунд до 0 и произвести действие" в php на действие пользователя просто запустить exec('/var/project/daemon', $output_1, $exitval);
    Ответ написан
    1 комментарий
  • Можно ли заменить этот if чем то более компактным?

    eXcNightRider
    @eXcNightRider
    FullStack Web Developer | DevOps
    const classNames = ['checkoutMethod', 'checkoutMethodImage', 'checkoutMethodName'];
    if (classNames.some(className => target.classList.contains(className)) || target.parentNode.classList.contains(classNames[1]) || target.parentNode.parentNode.classList.contains(classNames[1])) {
    }
    Ответ написан
    2 комментария
  • Почему 1 и 2 алерт выводят undefined, а не значения?

    eXcNightRider
    @eXcNightRider
    FullStack Web Developer | DevOps
    Нужно вернуть значение из функции
    return this._days; и return this._rate; в соответствующих функциях

    Ну и на всякий случай:
    function BigAnimal() {
      this.name = "Мышь";
      return { name: "Годзилла" };  // <-- возвратим объект
    }
    alert( new BigAnimal().name );  // Годзилла, получили объект вместо this

    И другой вариант
    function BigAnimal() {
      this.name = "Мышь";
      return "Годзилла"; // <-- возвратим примитив
    }
    alert( new BigAnimal().name ); // Мышь, получили this (а Годзилла пропал)
    Ответ написан
    Комментировать
  • Почему не открываются внутренние страницы сайта на WP?

    eXcNightRider
    @eXcNightRider
    FullStack Web Developer | DevOps
    Проверьте .htaccess

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    
    # END WordPress
    Ответ написан
    3 комментария
  • Как сделать единую точку входа для подкючения к бд?

    eXcNightRider
    @eXcNightRider
    FullStack Web Developer | DevOps
    Вариант 1. На скорую руку и эффективно. Чтобы не вдаваться в глубокие подробности, для решения задачи можно использовать фреймворк. Например Slim. Он легкий и достаточно простой в освоении и в нем как раз реализована из коробки та самая Единая точка входа. В документации все достаточно подробно расписано, как строится приложение, как подключается база, как работает роутинг, как подключить шаблонизатор, например twig и многое многое другое. На русском языке.
    Вариант 2. Сложный, но можно получить больший опыт. Пишем классы, в том числе и класс для подключения к бд. Кладем их в папку. Единой точкой входа станет, традиционно файл index.php в котором будет использоваться spl_autoload. Чтобы обращаться по различным урлам приложения, а не непосредственно файлам php понадобится роутинг. По данному вопросу опять же есть много информации в сети.
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (2)