Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Какие антивирусы для сайтов Вы используете?

Лучший ответ:
Андрей Пархоменко обычно проблемы кроются в косяках с настройками сайта, косяках с правами на файлы и каталоги или кривых плагинах/темах.
Почитайте о уязвимостях в wordpress security white paper и 10 советов по безопасности WordPress.
На хабре почитайте про выявление вредоносных PHP файлов, если сами не можете искать уязвимость, можете попробовать поискать ее плагинами или спец сервисами. Плагин Theme Authenticity Checker (TAC) проверяет файлы темы, плагин Exploit Scanner, плагин Anti-Malware. Сразу кучу плагинов ставить не надо, ставьте по одному, ищите уязвимость - если не видит, отключайте и пробуйте другой плагин. На постоянной основе можете держать включенным какой-нибудь простенький плагин для мониторинга изменений в файлах и папках, что-то вроде WordPress File Monitor (давно не обновлялся, но до сих пор исправно работает). 
Попробуйте проверить свой сайт с помощью яндекс Manul или сканер AI-Bolit.
P.S.
Если есть подозрения, что доступ к Вашему сайту или аккаунту имеют третьи лица, то смените все пароли, начиная с паролей от хостинга заканчивая паролем админа в wordpress.
Регулярно делайте бекапы файлов и базы данных, и храните их как можно дольше на другом сервере.

Худший ответ:
почти всегда решается установкой Better Wordpress Security - хороший плагин закрывающий кучу дыр, устанавливающий права фалов, закрывающий перебор и т.п.
Вопрос: На каком языке удобней писать websocket сервер?

Лучший ответ:
Вообще говоря быстрее/удобней таки на nodejs.
Если ваша цель - получить проект, который вы хотите быстро - пишите бизнес логику на PHP, для websockets юзайте habrahabr.ru/company/mailru/blog/266017/.
Можно линк на ваш проект?

Худший ответ:
Ничего не мешает на CoffeeScript под Node.js - потому лучше возьмите, то что знаете - быстрее напишите. А взлетит проект перепишите уже на чем-нибудь серьезном как Erlang, Go, Scala.
А не взлетит - ну и ладно, зато не убили кучу времени и не потеряли проект.
Вопрос: Какая книга по html5 + css3 самая ёмкая и углублённая?

Лучший ответ:
интернет

Худший ответ:
С моей точки зрения, наиболее полное понимание дает прочтение спецификаций по html и css. Однако, чтение сецификаций требует усидчивости и желания вникать в суть вещей.
Вопрос: Защита email от от попадания в спам базы?

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

Худший ответ:
По поводу кодов символов — вам надо защитить мейлы, или обеспечить их индексацию поисковиками? Или я не того рода проблему в этом вижу…
Как альтернатива, можете сделать так, чтобы при неработающем джаваскрипте вместо мейла картинка выводилась с ним же.
Вопрос: Чем или как сделан такой фон?

Лучший ответ:
Если речь о движущемся фоне, то он реализован с помощью простого слайдшоу с кейфрейм анимацией.@keyframes spinAround {
	from {
		transform: rotate(0deg)
	}
	to {
		transform: scale(5.0) rotate(80deg);
	}
}
+ сами слайды меняются с помощью js (хотя можно было тоже на кейфреймах это сделать, ибо всего 3 слайда).
Поверх него наложена сетка (можно хоть 1пиксельной картинкой делать или еще как угодно). Все крайне просто.
Вам никто не мешает изучить как у них все сделано через f12, стили у них не минимизированные.

Худший ответ:
Конкретно по вопросу вам ответили. Но по желанию можно и видео запихать =)<!doctype html>
  HTML5 видео в качестве заднего фона
  <link rel="stylesheet" href="style.css" />

  <video autoplay loop muted class="bgvideo" id="bgvideo">
   <source src="http://m.y.co/video/h264/luxury-yacht-charter-video.mp4" type="video/mp4"></source>
  </video>

</!doctype>
ссылку m.y.co/video/h264/luxury-yacht-charter-video.mp4  меняешь на свое видеоbody {
  background: url('video.png');
  background-size: cover;
}

.bgvideo {

  position: fixed;
  right: 0;
  bottom: 0;
  min-width: 100%;
  min-height: 100%;
  width: auto;
  height: auto;
  z-index: -9999;
}
Ссылку url('video.png') на картинку если видео не запустилось
Также можно добавить перед видео фильтр, точечки или еще что.Тестовый сайт
Вопрос: Почему не работает lightbox в wordpress?

Лучший ответ:
Когда вставляете медиафайл, то в параметрах отображения выберите "ссылка: медиа файл"
Так же неплохо проверить бы вообще прогрузился скрипт или нет (глянуть в коде страницы), возможно в шаблоне темы не вызывается wp_head() и wp_footer()

Худший ответ:
Блин у меня тоже такая проблема открывает фактический адрес изображения из папки upload хотя скрипт подключен проверял - в подвале
Вопрос: Как ограничить размер /var/log ?

Лучший ответ:
Можно, как вариант, внаглую создать файл-образ нужного размера и смонтировать в /var/log
примерно таким методом
# dd if=/dev/zero of=/var/log-image bs=XXX count=XXX (размер ХХХ подогнать под необходимый Вам)
# mkfs.ext3 /var/log-image
# mount /var/log-image /var/log
и не забыть прописать в fstab, если не позаботились об отдельном разделе или не хотите его создавать. 
Однако отдельный раздел всё же надёжней, т. к. не связан с ФС, на которой лежит файл образа.

Худший ответ:
сделайте на отдельном разделе, да.
Я использую вообще другой диск на 150gb для сбора и долговременного хранения логов
Вопрос: Не загружается картинка аяксом — где ошибка?

Лучший ответ:
Ошибка в том, что ты передаешь пустые данные. Попробуй обернуть в форму:<form>
  <input class="myinput" name="userfile" type="file" />
</form>
А потом передать сериализированную форму:var fd = new FormData($("form")[0]); // <- Передать данные с формы

Худший ответ:
В CodeIgniter даже есть своя библиотека для загрузки файлов File Uploading Class
Вопрос: Скорость Интернета на FreeBSD не привышает 30mb/s а должна достигать 100mb

Лучший ответ:
Что с нагрузкой? Чем НАТ сделан?
Реалтековую сетевуху сразу в мусор.

Худший ответ:
У pci пропускная способность 66 мегабит, может в этом дело, неплохо было бы увидеть топ на этой машине.
Вопрос: Как сделать добавление коментариев к статье по id?

Лучший ответ:
А что плохого в том, что комментарий можно сдуру прицепить к другой статье? 
-Все статьи открыты для комментирования?
-Да
-Тогда от того, что юзер сам поменял id и влепил комментарий в другое место, ничего страшного не произойдет.

Худший ответ:
Можете использовать CSRF или JWT
Вопрос: Посылка с США, как?

Лучший ответ:
Я думаю что надо записать свой домашний адрес где-нить в европе. 
А что бы российская таможня не стырила — это просто чудо какое-то.

Худший ответ:
Что такое инвойс? А емс не страхует от всего?
Вопрос: Как исправить неисправные сектора на USB-HDD?

Лучший ответ:
Похоже на это?

Худший ответ:
Странный подход! Подыхает диск, а Вы не хотите бекапить его содержимое? Значит не сильно оно Вам нужно, по крайней мере не все 500 GB. 
И поступить нужно именно так, как Вы в конце написали - слить нужную информацию, переформатировать, залить что-нибудь не ценное или имеющее копию. Следить за числом этих нестабильных секторов. Если растёт дальше - диск в утиль, умерла так умерла. А какие-то волшебные методы лечения - сказки всё это.
Вопрос: Как убрать у select в стилях border-radius?

Лучший ответ:
Стандартные select рендерятся при помощи двиижка браузера, поэтому ваши возмжности в кастомизации ограничены. Используйте сторонние решения для придания спискам той внешости, которую желаете.

Худший ответ:
Хмм... Вроде все нормально, закруглений нет: раз, два
Вопрос: Как лучше продать IT бизнес?

Лучший ответ:
Я думаю, что если вы составите небольшую «презентацию» с указанием доходов и расходов, а так же изменения в данных показателях за последние пару лет, этого будет достаточно. Дальше решите для себя за какой период (на ваш взгляд) данный бизнес должен окупаться и прибавьте к этой цифре 15-30% на своё усмотрение (потенциал на развитие). Вот и получите примерную оценочную стоимость.

Худший ответ:
Честно говоря, я думаю вы не на тот ресурс обратились
Вопрос: Как решить вопрос с hex dump?

Лучший ответ:
А где вопрос собственно?

Худший ответ:
Вопрос не ясен, и, вероятно, решается одной функцией стандартной библиотеки: atoi или strtoul
Вопрос: Какая есть лучшая реализация мониторинга процесса Zabbix'ом?

Лучший ответ:
Некропостинг, конечно, но нашёл этот пост, когда искал решение данного вопроса.
Тем, кто в будущем наткнётся - решение:
В zabbix для Windows есть Zabbix agent-проверки:
"proc_info" - для получения информации о процессе.
"proc.num" - для подсчёта кол-ва процессов, на сервере.
Подробно расписаны в мануале:proc_infoproc.num
Для большинства unix-систем вместо proc_info используется проверка proc.mem.
Для того, чтобы узнать - поддерживается ли в вашей системе тот или иной элемент данных - сверяйтесь с таблицей в мануале.
В случае автора ключ элемента данных должен выглядеть так:proc_info[process.exe,wkset,sum]
Данный элемент данных выводит кол-во потребляемой памяти в КБ.
Неудобно? Ставим в настройках элемента данных:
Units (Единица измерения) - B
Use custom multiplier (Пользовательский множитель) - 1024

Худший ответ:
Есть еще возможность наблюдение за процессами через perf_counter, например:perf_counter["\Процесс(explorer)\Счетчик потоков", 300]
Вопрос: Кнопка Google +1 на подгружаемом контенте?

Лучший ответ:
После генрации контента нужно выполнить на странице:
gapi.plusone.go();

Худший ответ:
Да, конечно, можно подгружать кнопку динамически. На примере юзерскрипта для Хабра можно разобрать, как это делается: spmbt.kodingen.com/habrahabr/habracut06.user.js, а при подгрузке увидеть, как это работает на Хабре. 
function addJs
loadGPlus = function(n)
и ещё в этой версии не добавлено последнее дополнение Гугла: асинхронная загрузка (написать elemScript.async ='true'; после elemScript.src = url;). Но проверял — этот параметр действительно работает (при постзагрузке не будет иметь значения).

(Посмотрев на loadGPlus — я бы не сказал, что там надо запускать одну лишь gapi.plusone.go() — нужно вот эту функцию, а деталей не помню, но видно, что запускается .plusone.render().
Вопрос: Linux Mint MATE vs XFCE или какую оболочку поставить на слабенький нетбук?

Лучший ответ:
Голосую за xfce. Легкая, лекго можно под себя настроить.

Худший ответ:
Mate субъективно удобнее, чем xfce. По производительности примерно одинаково.
Вопрос: Какой годный file uploader?

Лучший ответ:
Вот хороший: www.dropzonejs.com
А вообще, можно потыкать например тут: www.unheap.com/?s=upload

Худший ответ:
Использую Plupload уже давненько, собираю кастомный вариант с одним только HTML5 движком (без Flash, Silverlight, HTML4 и Java)
Вопрос: Влияет ли наличие чехла у телефона на работу беспроводной зарядки?

Лучший ответ:
По старой спецификации расстояние 5мм, по новой 40мм. Кожа и пластик не повлияют.

Худший ответ:
Есть разные беспроводные зарядки, когда я себе выбирал, в магазине только одна хорошо работала с толстым чехлом это Skyway(wireless.skyway-tm.ru). Остальные с чехлом не заряжали.
Вопрос: Как правильно хранить и обрабатывать данные на C#

Лучший ответ:
Если речь идет о параметрах приложения, почему бы не воспользоваться стандартным механизмом конфигурационных файлов .net? 
В сложных случаях, когда параметров много и они разделены на логические группы, можно создать несколько configuration section. 
А в простых сценариях, если вы не боитесь запутаться в именах конфигурационных параметров, можно обойтись просто ConfigurationManager.var lastLogin = config.AppSettings["LastLogin"];
Это стандартный механизм дотнета, не нужно париться с созданием кастомного файла, структурой, проверками.

Худший ответ:
System.Xml.Serialization.XmlSerializer reader = 
        new System.Xml.Serialization.XmlSerializer(typeof(User));
    System.IO.StreamReader file = new System.IO.StreamReader(
        @"c:\temp\userData.xml");
    UserData user= new UserData();
    user = (UserData)reader.Deserialize(file);
if(user!=null)
    Console.WriteLine(user.lastlogin); // тут будет доступ к полю lastlogin объекта user
в программе создайте класс объекта типа тогоpublic class UserData
{
     public string userlogin{get;set;}
}
Если вам нужно доступ такой как вы писали выше - используйте что то типа того:XmlNodeList elemList = doc.GetElementsByTagName("lastlogin");
    for (int i = 0; i < elemList.Count; i++)
    {
        Console.WriteLine(elemList[i].InnerXml);
    }
Вопрос: Выбор телефона с двумя SIM?

Лучший ответ:
Использую Fly mc170ds, удобный и простой, достаточно надежен, но если сильно уронить то не всегда сразу симки определяет. Еще там как-то очень коряво работает Opera Mini — для скачивания файлов он вызывает свой браузер, может я что-то криво настроен, но у меня если настроить так, чтоб работала Opera Mini — родной браузер работать перестает, соответственно файл не скачать.
Не хватает оперативной памяти для работы некоторых java приложений.

При использовании двух симок ничего переключать не надо — при отправке SMS или при звонке будет появляться выбор, как

Ну а так — большой экран, большие удобные кнопки, не тормозит. Правда, у меня в городе не нашел где продается, модель не новая да и производитель не особо распространен, но наверно в Москве с этим проблем нет


Худший ответ:
Может быть что-то из Samsung DuoS?
Вопрос: Решил создать мобильный банк, что посоветуете? На какие устройства нужно распространять?

Лучший ответ:
Для успешного приложения такого класса нужно работать над связями в банках и ритейле, над раскруткой, дизайном и проработкой потребителей, на программирование у Вас времени просто не будет.

Худший ответ:
Если нет команды, то забить.
Вопрос: Можно ли перевести с карты payoneer на карту visa или mastercard?

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

Худший ответ:
Пытался так сделать, не получилось и решил дальше этим не заниматься. Но вы попробуйте! Может у вас получится! там есть много всяких нюансов просто. Подключения, письма...
Вопрос: ТИЦ с ума сошел?

Лучший ответ:
SE плавно перебирается на хабр… Скоро начнут на заказ доры делать и тексты рерайтить =(

Худший ответ:
Вообще с 29го числа апдейт ТИЦ идёт, если что =)
Первые дни при апдейте его всегда колбасит, не обращайте внимания.
Вопрос: Wordpress. Оптимизация своего плагина?

Лучший ответ:
Все долгие операции нужно запускать из консоли. Для консоли времени выполнения нет.

Худший ответ:
самый простой, возможно не самый красивый способ  - писать куда то прогресс выполнения задачи.
1. забрать и распарсить xml - это быстро, после этого этапа скрипт уже знает сколько позиций ему предстоит обработать. (так ведь?)
2. обрабатываем в цикле позиции, после обработки каждой позиции пишем ее ID в таблицу (файл).
3. скрипт перезапускаем до тех пор пока циферка из шага 2 не сравняется с количеством позиций из принятого xml (это количество можно так же посчитать один раз на шаге 1 и больше не вычислять.)
Вопрос: Доброго времени суток, уважаемые знатоки Нормальная ли эта температура для мат платы, часто выходит bsod И что с этим делать За ранее спасибо?

Лучший ответ:
Программа неправильно интерпретирует показания датчиков в температуры. 
Не может быть температура процессора 15,9 градусов (последняя строка). Значит и 103 - тоже вранье.
Пощупай маму рукой - точнее будет

Худший ответ:
и что этот датчик показывает ? что это за температура ,
нет не нормальна надо понять что так греется и устранить трабл
Вопрос: Какие есть варианты подключить телевизор как второй монитор

Лучший ответ:
Ответом оказалось - miracast. Данный стандарт поддерживают многие телевизоры которые поддерживают WIDI, если не все. Но в отличии от widi ему не важно intel или amd. Самое интересное, что о его поддержке в телевизоре я вообще узнал случайно(нигде не было написано, даже в инструкции) - просто нажал на телевизоре подключиться через widi а том надпись "подключение через widi или miracast". Отлично работает, картинка конечно не как по hdmi, но поставленную задачу выполняет на отлично.

Худший ответ:
hdmi разьем этоочень современно?
Вопрос: Javascript backend frameworks or vanilla js?

Лучший ответ:
Посмотрите вот этот мой развернутый ответ: Подсоветуйте фреймворк для node?
Инструментов можно набрать тут: nodeframework.com и тут https://github.com/sindresorhus/awesome-nodejs и тут https://github.com/vndmtrx/awesome-nodejs
По БД рекомендую MongoDB, если у Вас данные аморфные, сложной или часто изменяющейся структуры с этими драйверами: https://www.npmjs.com/package/mongodb А если данные имеют редко меняющующуюся структуру и хорошо ложатся в таблицы, то берите реляционку, лучше PostgreSQL, с драйверами: https://www.npmjs.com/package/pg Но я не люблю и не рекомендую ORM, обычно от них больше проблем, тормозов и дополнительной работы больше, чем выгоды от их внедрения. Если уж приспичит, то для монги есть mongoose: mongoosejs.com это ODM, аналог ORM для документных баз, а для PG есть много вариантов, которые основаны на том же драйвере pg.
Паттерн MVC он вообще изначально был изобретен для графических интерфейсов пользователя, и там он еще как-то себя оправдывает, да и то кривенько, почитайте эти мои статьи: habrahabr.ru/post/204958 и habrahabr.ru/post/117791 Для ноды это вообще противоестественно. GUI и бекенд должны быть разделены сетевым API, на которое вешаются что мобильные приложения, что браузерные, что оконные, это уже без разницы.

Худший ответ:
В nodejs все немного подругому — нет, увы, но там совсем все иначе.
Во-первых, ваше приложение будет висеть в памяти долго и параллельно обрабатывать несколько запросов, в то время как в PHP тред сдохнет после отправки ответа на запрос; во-вторых, в node.js широко практикуется микромодульность; в-третьих, на vanilla.js вы замучаетесь писать, потому что это просто ядро js — окружение nodejs вам все равно понадобится для работы с libuv и сокетами/дескрипторами, и это будет уже не vanillajs.
Исходя из этих замечаний, пытливый читатель уже начнет догадываться, что ему нужны разные модули для:
а) веб сервера (или нет);
б) работы с хранилищами и абстракций над ними (моделей, клиентов дб с пуллом, или без, или руками все писать);
в) записи в лог (или руками stdout перенаправлять);
г) соль, перец по вкусу.
И вопрос стоит больше не в готовом фреймворке, а в наиболее подходящих частях.
Я бы порекоммендовал смотреть в сторону сырого https://github.com/senchalabs/connect, либо чуть более полного https://github.com/strongloop/loopback (фактически, connect с плагинами).
Если чем-то не устраивает — можно смотреть https://www.npmjs.com/package/restify (или то, что его у себя использует: https://www.npmjs.com/browse/depended/restify).
В качестве абстракции над моделями либо https://github.com/sequelize/sequelize (если база будет mysql/pgsql), либо https://github.com/Automattic/mongoose (если без разницы какая база) + https://github.com/Tokutek/mongo.
Для веб логов — https://github.com/expressjs/morgan
Для других логов — например, https://github.com/winstonjs/winston + нужные транспорты
Для конфигов — https://github.com/flatiron/nconf, если не хватает просто require("config.json")
И т.д.
Главное, понять, что чем меньше модуль, тем больше вероятность, что он стабильнее работает, и что тесты написано качественно.
Вопрос: Подскажие текстовый редактор, в который удобно тыкать пальцем?

Лучший ответ:
>> текстовый редактор
>> удобно без клавиатуры
¯\_(ツ)_/¯

Худший ответ:
Это как играть в шутер на планшете. Играть можно, но неудобно и нацелится сложно ;)
Вопрос: Как на сайт вставить кол-во просмотров всех видео на youtube канале?

Лучший ответ:
Вам нужен API youtub-а. Собственно вот

Худший ответ:
46544891818198949 - не благодарите
Вопрос: Как задать условие в mysql запросе?

Лучший ответ:
Может что-то такое подойдетselect t.*, if(l.light_name is not null, l.light_name, h.hard_name) as type_name from `table` t 
left outer join light l on l.light_id = t.c_id
left outer join hard h on h.hard_id = t.c_id
where
if(t.type = 1, l.light_id = t.c_id, l.light_id < 0)
or
if(t.type = 2, h.hard_id = t.c_id, h.hard_id < 0)

Худший ответ:
Гугл по словам "mysql if join" сразу же выдал ответ и альтернативу.
Вопрос: Как перенести скрипт из HTML в JS файл?

Лучший ответ:
Вам нужно прочитать про основы работы с событиями, например в learn JavaScript. Писать это в разметке вообще не стоит. https://learn.javascript.ru/introduction-browser-events

Худший ответ:
<button class=hatha>Хатха</button>$(".hatha").click(function() {
    time_select(...);
});
Вопрос: Можно ли как-то заставить PHP учитывать, что метод описанный в интерфейсе реализован в магическом методе?

Лучший ответ:
если вы реализовываете интерфейс, то вы должны реализовать все методы, объявленные в нем

Худший ответ:
В общем, как сказал Сергей Протько, методы интерфейса обязательно должны быть реализованы явно. Встречал в интернете вариант, где для каждого "магического" метода делают заглушку через return $this->__call(__FUNCTION__, func_get_args()), но это как-то не фонтан как и необходимость выдумывать новое имя для метода. Решил через Trait со всеми недостающими методами, а внутри трейта исходные методы вызываю через parent::methodName().
Вопрос: Нравится ли вам дизайн сайта?

Лучший ответ:
Совершенно не нравится. Обычный штампованный сайт. Уродские длинные тени, криво сверстанный параллакс, попытка встраивать Material Design куда ни попадя. 
Набор штампов. Выглядит как обычный проходной сайт-блестяшка. Вас таких сотни, если не тысячи. Тупая и бестолковая дань "моде". Доверия не вызывает, тяжелая графика. Фотографии со стоков - минус.
Сделайте что-нибудь оригинальное.

Худший ответ:
Сайт "на любителя".
Если пробежаться по топикам с красивыми сайтами, то такой дизайн там присутствует и не раз, а на счет "на любителя" - это чисто мое восприятие. Например мне не нравится много фотографий в качестве фона, для меня приемлемо векторная графика и монотонные заливки, либо ставшими популярными в последнее время заливки патернами иконок на подобии таких https://creativemarket.com/creativestall/95746-6-S...
Вопрос: Страница не найдена (404-я ошибка)?

Лучший ответ:
У всех так. Читайте отсюда — m.habrahabr.ru/post/162693/

Худший ответ:
Афигеть вообще даже в кэше яндекса и то нету говорит 404 даёт… но кто-то успел репост сделать
sysadmins.ru/post10835470.html
Вопрос: Elance заблокировал аккаунт, как решить?

Лучший ответ:
Никак
Кантри менеджер ничем помочь не сможет. Поговори с клиентом и попроси его верифицироваться.
Еланс не закрывается а просто отребрендился после того как купил видимо за много миллионов долларов одеск
Ваши копейки там никому не нужны.

Худший ответ:
В общем все разблокировали. Пришлось поднапрячь клиента, чтобы он тоже прошел все эти процедуры. Видимо подозревали в накрутке рейтингов, либо в том, что я логинюсь в другие аккаунты (заказчик из той же страны что и я, возможно GeoIP базы кривые у них).
В общем смешанные чувства остались у меня от этого случая. С одной стороны я их понимаю, но с другой стороны, лочить деньги фрилансера как-то не комильфо. Если у кого-то висят кредиты, то так и влететь недолго, при этом сотрудники Elance покажут покерфейс и добавят, что "Мы Вас понимаем, но ничем не можем помочь".Ваши копейки там никому не нужны. 
Ну может для Elance да, но для меня 2K$ не совсем копейки, поэтому как-то печально это все.
Вопрос: Кто посоветует роутер с поддержкой 3G, одним портом LAN и возможностью установки OpenWRT?+?

Лучший ответ:
Полностью соответствует вашему запросу NEXX WT3020
Небольшой обзор: mysku.ru/blog/aliexpress/29103.html
Этот же роутер участвует в проекте Anonabox geektimes.ru/post/240360

Худший ответ:
Могу посоветовать на один порт, плюс usb для 3G/4G-модема, с возможностью установки OpenWRT.
TP-Link TL-MR3020
Очень приятная мелкая железка.
Посмотрите, может у него есть какие-то родственники с двумя портами.
Вопрос: Как можно управлять роутером используя php?

Лучший ответ:
Варианты:
1) следим в фаербаге запросы, которые отправляются на роутер, когда мы в браузере что-то меняем в настройках железки. А дальше симулируем такие же запросы через любой язык программирования по протоколу HTTP
2) ставим на роутер прошивку прошивку dd-wrt, туда втыкаем snmpd, А дальше управляем железкой по SNMP

Худший ответ:
Использовать PHPTelnet: www.geckotribe.com/php-telnet
Управляем роутером с телнета.