# Instalare pe alt site PHP

> Nucleul PHP, pentru orice site PHP fără pachet dedicat.

Nucleul e baza pachetelor pentru WordPress, Laravel și OpenCart. Îl folosești direct pe orice alt site PHP (Symfony,
CodeIgniter, cod propriu).

**Cerințe:** PHP 8.1 sau mai nou, `ext-json`. Folosește `ext-curl` dacă e instalat. Fără alte dependențe.

## Instalare

1. **Creează o cheie** în Survelium → **Setări brand → Integrări → Creează cheia**. Apare o singură dată.
2. Până când pachetul e pe Packagist, adaugă repo-ul în `composer.json`:

   ```json
   "repositories": [{ "type": "vcs", "url": "https://github.com/survelium/agent-analytics-php" }]
   ```

3. Instalează-l:

   ```bash
   composer require survelium/agent-analytics-php:^0.1@dev
   ```

4. Pornește-l o singură dată, cât mai devreme în fiecare cerere (în front controller sau prin `auto_prepend_file`):

   ```php
   use Survelium\AgentAnalytics\AgentAnalytics;
   use Survelium\AgentAnalytics\Config;

   AgentAnalytics::start(new Config(apiKey: 'svk_...'));
   ```

Atât. La sfârșitul cererii, afișarea de pagină se înregistrează (`GET`/`HEAD`, nu XHR sau prefetch), iar la 50 de
elemente sau 60 de secunde buffer-ul se trimite. Sub PHP-FPM sau LiteSpeed, răspunsul pleacă întâi spre vizitator.

## Înainte să-l lași să ruleze, verifică

- **În spatele Cloudflare sau al unui load balancer**, setează `ipHeader`, altfel boții nu pot fi
  [verificați](https://survelium.ro/docs/ai-traffic/crawlers.md#verificarea).
- **Un cache de pagini în fața PHP-ului** ascunde boții care citesc paginile din cache. Exclude din cache user
  agent-ii boților AI ([lista](https://survelium.ro/docs/ai-traffic/crawlers.md#lista-botilor)).
- **Folderul de stocare poate fi scris** de utilizatorul serverului web. Dacă nu, nu se înregistrează nimic (și nu se
  strică nimic).

## Opțiuni

```php
new Config(
    apiKey: 'svk_...',
    trackReferrals: true,                      // false = doar boții AI
    denyPaths: ['/admin'],                     // căi nici raportate, nici numărate
    ipHeader: 'HTTP_CF_CONNECTING_IP',         // doar în spatele unui proxy care îl setează mereu
    storagePath: '/var/www/storage/survelium', // implicit: folderul temporar al sistemului
);
```

## Când ceva nu merge

- **Survelium indisponibil:** datele rămân în buffer, reîncercările se răresc de la 30 de secunde la o oră.
- **Cheie revocată:** pauză de o oră. **Plan fără Trafic AI:** pauză de 6 ore. Datele se păstrează.
- **Folder nescriibil:** nu face nimic. Integrarea nu-ți strică niciodată site-ul.
