Какие требования к хостингу у CPA Tracker?

Любой хостинг на Linux подойдет, никаких особенных требований нет.

PHP 5.2.4 или выше, MySQL 5.0 или выше. Apache или nginx. Для экспорта в Excel потребуется PHP модуль xmlreader. Системные требования такие же как у Wordpress, этим требованиям отвечают все современные хостинги.

Куда лучше устанавливать трекер на хостинг или все-таки VPS или выделенный сервер?

Если у вас меньше 20 тысяч переходов в день, то можно на хостинг.

Для установки трекера обязательно нужен сервер или достаточно простого хостинга?

Достаточно обычного хостинга.

Для установки CPA Tracker нужен отдельный домен?

Вам нужен отдельный домен или поддомен. Вы также можете установить трекер в папку существующего домена.

Чтобы использовать трекер у меня должен быть свой сайт или домен?

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

Как установить CPA Tracker на сервер с Nginx?

server {
	listen 80;
	server_name www.myserver.com myserver.com;
	root /path/to/cpatracker;
	index index.php ;
	proxy_buffer_size 128k;
	proxy_buffers 4 256k;
	proxy_busy_buffers_size 256k;
	fastcgi_buffer_size 128k;
	fastcgi_buffers 4 256k;
	fastcgi_busy_buffers_size 256k;
	location ~ ^/track/cookie\.js$ { rewrite ^/.*$ /track/cookie.php; }
        location /track/ { try_files $uri $uri/ @track; }
        location @track { rewrite ^/track/(.*)$ /track/track.php?track_request=$1 last; }
	location ~ \.php$ 
	{
		fastcgi_index index.php;
		fastcgi_pass backend;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include /etc/nginx/fastcgi_params;
	}
}

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

Апстрим должен быть описан соответствующим образом в глобальном конфиге, например так:

upstream backend {server unix:/tmp/fcgi.sock;}

Отчеты, учет переходов и постбэков на этом конфиге оттестированы, все работает.

У вас можно купить домен с уже установленным CPA Tracker?

К сожалению, нет.

Использую хостинг Джино. На нем работает CPA Tracker?

Да. У нас есть пользователи, которые используют CPA Tracker и данный хостинг.

Можно ли поставить на обычный шаред хостинг при нагрузке меньше 3000 переходов в сутки? Какие параметры VPS\сервера должны быть для нормальной работы трекера и как их считать, при нагрузке например 10 000 переходов в сутки, 100к переходов в сутки?

На любой вопрос, который связан с нагрузкой или shared хостингами очень сложно ответить однозначно. Слишком много параметров могут отличаться от хостинга к хостингу. Какие ресурсы ограничивает ваш хостер, что происходит при их превышении, какой у вас сервер и какая скорость дисков, как настроен PHP, какой используется веб-сервер и как работает файловый кеш. 

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

 

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

 

Каждый переход дописывается в текстовый файл с блокировкой записи, имя файла выбирается исходя из текущей минуты.

file_put_contents(dirname (__FILE__).'/cache/clicks/'.'.clicks_'.date('Y-m-d-H-i'), $str, FILE_APPEND | LOCK_EX);

 

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

 

Файлы текущей или прошлой минуты не обрабатываются, так как в них еще может осуществляться запись. За один раз обрабатывается не более 60 последних файлов.

 

Перед сохранением записи в mySQL подключаются несколько библиотек (WURFL для определения мобильных устройств, MaxMind для определения страны, UAParser для определения типов браузеров), после чего выполняется SQL запрос INSERT к таблице tbl_clicks. Данные вставляются по одному переходу за раз, группировки нет. Использование библиотек занимает какое-то время, плюс есть время на вставку в базу данных.

 

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

1. Скорость поступления запросов к /track/

2. Блокировка записи в текстовый файл и очистка данных за текущую минуту при сбоях в механизме блокировки

3. Скрипт process_clicks.php не успевает обрабатывать данные за 1 минуту (интервал крона) и начинают запускаться новые копии данного скрипта

4. Количество данных для INSERT вставки замедляет базу и данные начинают накапливаться

5. База ложится по любой причине и INSERT проходит в никуда

6. Скрипт process_clicks.php работает медленнее чем данные накапливаются в файлах и расхождение по времени между файлами и базой увеличивается

Хочу отметить, что в большинстве случаев вы вряд ли столкнетесь с какой-либо из этих проблем. Если количество переходов не превышает 30-40 тысяч в день, скорее всего любая конфигурация хостинга будет работать. А если у вас больше трафика, то вы без труда сможете решить проблему или тюнингом сервера (к примеру, уже есть успешные установки на nginx+php-fpm) или подключением дополнительных механизмов (memcache, nosql), правильной настройкой интервала для запуска крона или косметическими исправлениями скриптов track.php и process_clicks.php.