Sì, più o meno.
Lo script può benissimo essere unico.
Anzichè fare il ciclo di invio su 2000 utenti, lo fai su 100 (ad esempio) utenti per volta.
Alla prima invocazione non passi parametri così lo script capisce che iniziare da 0.
Dopo l'invio, lo script richiama se stesso passando come parametro il prossimo utente da cui partire:
- script.php?start=100
- script.php?start=200
- script.php?start=300
- ...