Require fuehrt das Script weiter aus wenn ein fehler im includierten skript passiert und erzeugt eben eine Warnung. Beim Inlude wird ein Fehler ausgegeben und die ausfuehrung des Skriptes unterbrochen. Die jeweilige _once Version der befehle bindet eine Datei nur einmal ein auch wenn die datei in mehreren eingebunden Dateien includiert wird.
z.b. Datei a.php includiert b.php und c.php welche beide ihrerseits d.php includieren. beim einfachen include wuerde nun d.php 2mal in das ausgabeskript kopiert werden. wird jeweils mit include_once gearbeitet, erkennt PHP beim 2. Aufruf des include befehls, dass die datei schon in der ausgabe vorhanden ist und uebersprint weitere kopien. Was sich durchaus in der ausfuehrungsgeschwindigkeit bemerkbar machen sollte.
Ich muss csharp.dev hier wiedersprechen: require(_once) stoppt mit einem fatalen Fehler, während include(_once) nur eine Warnung ausgibt. Ansonsten isses richtig: *_once bindet nur bei Bedarf ein.