Das mit den 15000 gleichzeitigen Nutzern kannst du erst mal vergessen, denn dafür brauchst du eine ganz andere Infrastruktur, als du bei einem Billighoster für 10€ im Monat bekommst.
Davon abgesehen reicht ein Request mit AJAX pro Pixel oder für eine Gruppe von Pixeln aus, aber Websockets sind wohl noch mal wesentlich eleganter, sofern im Browser verfügbar. Anstatt hierfür eine fette fertige Bibliothek zu nehmen, würde ich mir diese Minifunktionalität und die Zeichenfunktionen fürs Canvas Objekt auf ca. 50 Zeilen JS-Code aber lieber selber bauen ... ist viel schlanker und schneller.
Serverseitig wird es hier mit PHP sehr ungünstig, weil PHP außer Datenbanken eigentlich keine schnelle Synchronisierungsmöglichkeit bietet. Allerdings ist hier z. B. MySQL absolut aufgeblasen und saulangsam.
Im Idealfall würdest du durch Mutexe oder Semaphoren geschützten Shared-Memory nehmen, um die Zeichenfläche mit den Pixeln zu speichern, und ebenfalls ein Shared-Memory-Array (im Sinne von C-Array, nicht PHP array!) als Stack für die letzten Änderungen.
Der Speicherbedarf wäre auf deinem Server für eine Zeichenfläche von 800x600 Pixeln mit drei RGB-Kanälen ca. 1,5 MB und für den Stack ca. 8MB (r, g, b, x, y).
Die initiale Zeichenfläche könntest du RLE-Kodiert übertragen, oder die Kompression einfach der gzip-Kompression überlassen.
Auf Server und Client musst du dann nur jeweils einen 32-Bit Integer zur Abfrage einer Änderung austauschen, und bei positiver Antwort wären im IP-Paket noch genügend Byte frei um über 100 Pixel auf einen Schlag zu aktualisieren.
Dieses Vorgehen hätte den Vorteil, dass es MINDESTENS 10000 mal schneller arbeiten wird, als wenn du eine Datenbank einsetzt, und damit könntest du dann tatsächlich locker weit über 15000 gleichzeitige Nutzer bedienen ... aaaaber das PHP Modul deines Servers wird zum Flaschenhals werden, vor allem bei Billighostern, also rechne eher mit 100 bis maximal 1000 gleichzeitigen Nutzern.
Shared Memory ist bei vielen PHP Installationen standardmäßig deaktiviert, aber in den "Process Control Extensions" findest du SysV-Shared-Memory, Semaphoren und den ganzen POSIX-Kram. :)
Guck mal hier:
https://secure.php.net/manual/en/refs.fileprocess.process.php
Falls dir das zu kompliziert ist (isses nicht wirklich!) und du lieber serverseitig auf SQL setzen willst clientseitig auf eine fette JS-Bibliothek, wird das ganze viiieeeeel langsamer werden, aber immer noch ausreichend schnell genug, dass du bei 100 gleichzeitigen Nutzer vermutlich keinen Performance-Verlust registrieren wirst. :)