mendel

mendel
Рейтинг
232
Регистрация
06.03.2008
_SP_:
php
_SP_:
народ своих демонов пишет

А на пхп что демонов писать нельзя?)

Узким местом всегда будет база.

В данном кейсе еще постобработка данных.

При грамотной архитектуре пхп в системе статистики не будет узким местом от слова совсем.

Stek:
Т.е. понимаю, что когда будет куча запросов в секунду, оно где то да перезапишется

Вы исходите из данной сферической задачи и своего сферического решения.

А вопрос несколько глубже.

Человек увидевший ваш пример начнет писать по образу и подобию.

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

Ну и просто некрасиво, да)

---------- Добавлено 10.05.2017 в 23:17 ----------

easywind:
Раз сказали "а" говорите и "б". Где читать?

Запускаем один процесс в качестве демона который получает запросы от воркеров и ведет наш лог. Например демон открывает себе файл-лог на запись и пишет по мене поступления запросов от воркеров.

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

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

Таким образом мы получаем быструю систему кушающую мало процессора, без проблем с дедлоками, с перезаписыванием информации и т.п., при этом способную держать высокую нагрузку.

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

Например этот фоновый процесс может из нашего лога переносить данные в нормализованную реляционную СУБД с кучей индексов для удобного поиска, суммировать всякие счетчики и т.п.

Разделять файл между демоном и воркером можно по разному, от тупого разделения данных в разные файлы по времени и разбора из "старого" периода, до псевдомногозадачности (например на генераторах) в самом демоне.

Stek:
Думаю, что когда у ТС будет сотни конкурентных запросов в секунду, то к этому времени он код раз 10 перепишет и там будет все по другому.

Вот в том то и дело что нет)

Лет пять назад я тоже так думал.

Но и через пять лет всё везде остается вот так вот, только помноженное на 48. :(

---------- Добавлено 10.05.2017 в 23:20 ----------

miketomlin:
также используется Content-Length

А зачем? Нет правда, зачем? Я честно подумал о нем в самом начале когда кеширование запрещал. Но потом решил что смысла в нем нет, ведь это лишь сообщает браузеру весь размер файла чтобы в процессе скачки видеть прогресс скачки. Но зачем? Это ведь не скачиваемый файл а часть страницы. Или я торможу где-то?

---------- Добавлено 10.05.2017 в 23:21 ----------

miketomlin:
префикс вроде /promo

Сами писали? С какой целью не поделитесь?

Stek:
$counter = intval(file_get_contents('counter.dat'));
$counter++;
file_put_contents('counter.dat', $counter);

Вот за это нас пхпшников и не любят).

И да, я вкурсе что это "лишь пример" и "не делайте так в продакшене".

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

Adrian2012:
Нет отзывов что там по старому ссылочному (на http страницы) после перехода, сильно плохо?

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

Вот так вот просто, без всяких подтверждений - верь мне на слово?)

Гы.

hrach:
раз печетесь о памяти то используйте fopen, постраничное чтение и вывод всего этого в выходной поток.

Что будет медленнее и прожорливее по памяти чем readfile.

hrach:
хорошо критикуете мой скрипт, который я накидал прямо тут
и это не скрипт, а жалкий прототип.

Так и я как-бы не в IDE писал. Тоже "прямо тут", так что оно вообще может и не заработать).

Зачем вообще код приводить если он ошибочный и неполный?

Человек не понимает как готовить мод_реврайт и прочие базовые вопросы.

К чему нерабочий код?

И да, я не критикую а дополняю). Писал бы первым, про миме забыл бы)

hrach:
echo file_get_contents('spacer.gif');

никогда так не делайте.

Используйте readfile.

В данном случае оно не существенно, ибо файл маленький и лежит рядом, но

с большим файлом можно упасть по памяти. Для вывода файла есть соответствующий инструмент - его и используйте.

Далее - хорошо что вы вывели миме, но плохо что забыли про кеширование.

Если не ошибаюсь то должно быть что-то вроде:


function showFile($filename, $mime) {
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Type: '.$mime);
readfile($filename);
}
showFile('spacer.gif','image/gif');

Если уж следить, то следить, стоит ставить и проверять куку.

И да, реферер с хттпс на хттп не передается, плюс ваш скрипт или картинка на хттпс сайте будет ломать сайт если счетчик будет не хттпс.

easywind:
Все мы учимся. задает глупые вопросы как кажется многим. Главное это изучать, а не сидеть

Не вопрос. Но статистика сложная вещь, и лучше с нее не начинать.

easywind:
Это что? Можно подробней, где почитать?

Дийсклеймер: Пример выдуманный, все совпадения случайны.

Захотели вы допустим на серче в некоей политической теме собрать информацию об оппонентах. Ну или в своей рекламной теме собрать статитику по пиплу - кто читал, кто писал. Сопоставить по IP кто клон конкурента а кто реальный обиженный клиент и какой именно. Решили поставить в тему свой счетчик статистики. Но как-то не заладилось. Админы доступа не дают.

И вы решили добавлять в каждое сообщение картинку. Да не простую, а с подвохом. Картинка лежит на вашем сайте. Картинка размером 1*1 пиксель. Это прозрачный png. Т.е. картинку не видно. Но картинка это не просто картинка, а пхп-скрипт, который сохраняет всю доступную информацию о том кто ее запросил (айпи, юзер-агент и т.п.) после чего выводит в браузер картинку. Ну и запрет кеширования конечно.

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

Не помню как сейчас, не смотрел, но раньше невидимый однопискелы использовали и приличные сервисы статистики. Однопиксел добавляешь в самом начале страницы, а уже скрипт и счетчик в конце.

ПС: не пробуйте применять на сёрче, я специально "сказку сократил" - сразу попадетесь. ;)

Бросьте это гиблое дело.

Анализируйте логи если так надо.

Без обид, но при таком уровне вопросов...

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

Есть один (или не один) злой паук который гуляет по сети и ищет всякие "однопиксельные метки" и прочие наколенные счетчики скармливая им поддельные HTTP_REFERER, HTTP_USER_AGENT и т.п. в надежде на инъекцию... Много чего можно поймать. Оно вам надо?

Ravel:
Вряд ли вы найдете тут хостера, который будет использовать на своих серверах нестабильную версию.

А оно еще и из дев-ветки? Какая прелесть)

smart2web:
Кому и миллионами ))

Ну давайте на пальцах.

Минимум четыре админа, три из которых на удаленке, один в штате. Для круглосуточного саппорта. Четвертый кое-как резерв, выходные и сохранение компетенции в компании а не на аутсорсе. Реально это конечно безумно мало, но в принципе работать будет. Допустим удаленщики по 500 баксов в месяц, в штате 1000 баксов. Соизмеримый масштаб у отдела продаж. Рекламный бюджет на поддержку четырех продажников у нас будет не меньше 5к, разве что уже живая клиентская база, но мы ведь начинаем.

У нас порядка 750 часов админов (четвертый в резерве, руководящие задачи и т.п.) в месяц. Этого хватит где-то на 50 серверов с учетом что они еще и помогать юзерам будут. Ну ок, пусть в начале кофе пьют по полдня. Возьмем 25 серверов. Допустим баксов по 300 каждый в месяц. 7500.

Итого бюджет начинающего ресселер-хостера 5к ФОТ, 5к реклама, 7,5 сервера. Это уже 17,5к в месяц. Накинем всякий софт, хоть какие-то административные расходы (даже если у тебя только офшорный юрик, за этим надо как-то следить), хоть минимальный офис - получим грубо 20к$ в месяц. Чисто для начинающего без своего железа. Для нормальной работы конечно это надо умножить на два. А если работать официально в наших юрисдикциях, то еще и содержание юрика, лицензия телематики, налоги на ФОТ и т.п., это умножаем еще на два.

Т.е. вилка минимальных месячных расходов для небольшого хостера это 20-80к$.

Нет, можно отдавать админов на аутсорс, а саппорт ночью не оказывать, или положить телефон рядом со спящим "учредителем", в надежде что услышит во сне что новый тикет прилетит. Но всё это не бизнес, а фигня какая-то.

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

Можно так. Но это не в категорию хостеров.

Чё я хотел сказать то?

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

clydebarrow:
какая в этом разница на данный момент? они отвечают не так же охотно, как и исп.

А вы за эту тему заплатили? Нет? Тогда это форум. И на форуме принято делать так, чтобы интересно было всем. Мне например интересно именно то как ведут поддержку в этом недоконструкторе.

clydebarrow:
по своему уг бизу других не судят

Суммы платежей тоже интересны да.

Три года назад продал один сайт. Сейчас мне такие суммы в месяц приходят по партнеркам миралинска и т.п., чью рекламу когда-то у себя размещал. Т.е. рекламы нет уже пару лет как а выплаты есть. Так что суммы невелики в любую сторону, но тем не менее хотелось бы узнать - это вы им платите или они вам?

clydebarrow:
неадекватные цифры неадекватного менеджера?)

ИМХО если уж вы говорите об обороте то стоимость хостера это примерно два годовых оборота (не путать с прибылью) если нет собственного железа или его доля невелика, и пятилетний оборот если собственное железо есть, ДЦ партнерский. Ну так, на глаз. Если уж "забиться" решили и оборотами меряетесь, то как-то так и цену можете определить). Цифры по договоренности, не обязательно мои)).

Всего: 1906