• Какое железо лучше для нагруженного веб-сервера?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Для нагруженных сервисов железо не так важно, важна архитектура.
    Железо - это вертикальное масштабирование и оно всегда имеет ограничения, с которыми все сталкиваются через полгод-год-два. Впрочем, этот твой вопрос тому доказательство.
    Надо делать упор на горизонтальное масштабирование, чтобы не зависеть от характеристик железа.
    Другими словами, должно быть много недорогих (слабых) серверов, а не один дорогой и мощный.
    Лично мне такой подход позволяет держать нагрузку ~24000 запросов в секунду на десяти дешёвых серверах.
    Если нагрузка возрастёт, то я куплю ещё 2-5-10 дешёвых серверов вместо того, чтобы думать о характеристиках железа
    Ответ написан
    Комментировать
  • Почему данные не отправляются на почту?

    @Kvason
    Веб-разработчик
    Какая проблема погуглить? У твоего проекта нет почтового аккаунта, на бесплатном хостинге такой услуги может не быть, если тебе надо отправлять письма то используй phpmailer, он безопаснее и более предпочтительный и тебе нужен хостинг с услугой почтового домена
    Ответ написан
    Комментировать
  • Почему не передаются параметры?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Садись, будем с тобой учиться программированию.

    То что у тебя здесь написано - это не программирование.
    Написать в столбик несколько операторов можно и обезьяну научить.

    Программирование начинается тогда, когда твой код престаёт работать.
    Процесс выявления участка, который не работает, и что надо исправить, называется отладкой. И это и есть на самом деле программирование.
    Для отладки нужно две вещи:
    1. В принципе понимать, что делает твой код. причём не в целом, а каждый оператор в отдельности. Какие данные он должен получать на вход, что с ними делать, что должно быть на выходе.
    2. Трассировка. Которая заключается тупо в выводе промежуточных результатов.

    поэтому после кода добавляем строчку
    var_dump($_SERVER['QUERY_STRING'], $addGet,$config['http_home_url'],$_SERVER['REDIRECT_SCRIPT_URL']);

    и смотрим, где чего не хватает.

    И только после этого идём на тостер задавать конкретный вопрос, "а почему у меня такая-то переменная пустая"
    Ответ написан
    Комментировать
  • Как сделать вход в SSH по доп. порту?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    просто добавить еще один порт в /etc/ssh/sshd_config
    Было:
    Port 22

    Стало:
    Port 22
    Port 2222


    А ограничение по IP у вас через iptables скорее всего настроено, то есть для нового порта ограничений по умолчанию не будет.
    Ответ написан
    Комментировать
  • Как в php найти слово из массива в заданной строке?

    sabramovskikh
    @sabramovskikh
    php.net/manual/ru/function.strstr.php php.net/manual/ru/function.strpos.php можно использовать в цикле
    php.net/manual/ru/book.strings.php

    И пример со страницы доки
    <?php
    function strpos_array($haystack, $needles) {
        if ( is_array($needles) ) {
            foreach ($needles as $str) {
                if ( is_array($str) ) {
                    $pos = strpos_array($haystack, $str);
                } else {
                    $pos = strpos($haystack, $str);
                }
                if ($pos !== FALSE) {
                    return $pos;
                }
            }
        } else {
            return strpos($haystack, $needles);
        }
    }
    
    // Test
    echo strpos_array('This is a test', array('test', 'drive')); // Output is 10
    Ответ написан
    Комментировать
  • Как сделать два отдельно работающих провайдера на одном сервере?

    @sergeevav82
    Вот для примера, как и обещал:
    В /etc/iproute2/rt_tables добавляем
    101     P1  -  Провайдер1
    102     P2  -  Провайдер2


    routing.sh
    echo "Чистим таблицы"
    ip route flush table P1
    ip route flush table P2
    echo "Чистим правила в таблицах"
    ip rule delete table P1
    ip rule delete table P2
    echo "Чистим кэш"
    ip route flush cache
    echo "Заносим gw в таблици"
    ip route add default via <шлюз 1-го провайдера> dev <интерфейс 1-го прова> table P1
    ip route add default via <шлюз 2-го провайдера> dev <интерфейс 2-го прова> table P2
    echo "Добавляем правила в таблици"
    ip rule add from <IP 1-го прова> table P1
    ip rule add from <IP 2-го прова> table P2
    echo "Добавляем правила в таблици по маркировке"
    ip rule add fwmark 1 table P1
    ip rule add fwmark 2 table P2
    echo "Заносим сети провайдера в таблицу 1"
    ip route add <Сеть 1-го прова> dev <интерфейс 1-го прова> src <IP 1-го прова> table P1
    echo "Заносим сети провайдера в таблицу 2"
    ip route add <Сеть 2-го прова> dev <интерфейс 2-го прова> src <IP 2-го прова> table P2
    echo "Заносим локальные сети в таблицу 1"
    ip route add <локальная сеть> dev <интерфейс локалки> src <IP на интерфейсе локалки> table P1
    ip route add 127.0.0.0/8 dev lo table P1
    echo "Заносим локальные сети в таблицу 2"
    ip route add <локальная сеть> dev <интерфейс локалки> src <IP на интерфейсе локалки> table P2
    ip route add 127.0.0.0/8 dev lo table P2
    echo "Удаляем маршрут по умолчанию"
    ip route del default
    echo "Создаем маршрут по умолчанию"
    ip route add default scope global nexthop via <шлюз 1-го прова> dev <интерфейс 1-го прова> weight 1 nexthop via <шлюз 2-го прова> dev <интерфейс 2-го прова> weight 1


    Если провайдер выдает динамику, то можно в качестве параметров скрипту передавать IP и шлюз

    Вырезка из правил iptables

    *mangle
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    :balance - [0:0]
    -A PREROUTING -m state --state RELATED,ESTABLISHED -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
    -A PREROUTING -i <интерф. прова1> -m state --state NEW -j CONNMARK --set-xmark 0x1/0xffffffff
    -A PREROUTING -i <интерф. прова2> -m state --state NEW -j CONNMARK --set-xmark 0x2/0xffffffff
    -A PREROUTING -d <IP или сеть> -j CONNMARK --set-xmark 0x1/0xffffffff  - это принудительный выход через 1-го прова.
    -A PREROUTING -d <IP или сеть> -j CONNMARK --set-xmark 0x2/0xffffffff   - это принудительный выход через 2-го прова.
    -A PREROUTING -i <интерфейс локалки> -m state --state NEW -j balance
    -A PREROUTING -m connmark --mark 0x1 -j MARK --set-xmark 0x1/0xffffffff
    -A PREROUTING -m connmark --mark 0x2 -j MARK --set-xmark 0x2/0xffffffff
    -A PREROUTING -m state --state NEW -m connmark ! --mark 0x0 -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
    -A OUTPUT -m state --state RELATED,ESTABLISHED -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
    -A OUTPUT -m state --state NEW -j balance
    -A balance -o lo -j RETURN
    -A balance -o <интерфейс локалки> -j RETURN
    -A balance -m connmark ! --mark 0x0 -j RETURN
    -A balance -m state --state RELATED,ESTABLISHED -j RETURN
    -A balance -j CONNMARK --set-xmark 0x2/0xffffffff
    -A balance -j RETURN


    В итоге вывод команды ip ro будет следующим.
    ..........
    default 
            nexthop via <шлюз 1-го прова>  dev <интерфейс 1-го прова> weight 1
            nexthop via <шлюз 2-го прова>  dev <интерфейс 2-го прова> weight 1
    ...........


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

    GavriKos
    @GavriKos
    https://www.windowscentral.com/how-connect-and-set...
    пункт "How to show taskbar across multiple displays on Windows 10"
    Ответ написан
    Комментировать
  • Mysql. Как выбрать строки в поле которого есть только цифры?

    dali
    @dali
    firstr_letter только один символ?
    протестируйте на скорость выполнения следующие конструкции:
    — WHERE first_letter IN (1,2,3,4,5,6,7,8,9,0)
    — WHERE first_letter REGEXP '[0-9]'
    Ответ написан
    Комментировать
  • Как добавить новый элемент массива после указанного элемента?

    Вот здесь рассказывают stackoverflow.com/questions/3353745/how-to-insert-...
    Ответ написан
    Комментировать
  • Curl и вечная обновление страницы?

    glebovgin
    @glebovgin
    Full Stack Web Developer
    Дело в том, что в $content есть какой-то js-код, который в браузере после echo исполняется и отсюда редиректы.
    Ответ написан
    Комментировать
  • Что предложить Яндекс безопасная сделка вместо депозита на 200000р?

    opium
    @opium
    Просто люблю качественно работать
    яндекс ничего предложить нельзя если вы не компания по размеру как яндекс в денежном эквиваленте.
    Ответ написан
    Комментировать