(uní ambos temas .. pues guardan relación) ..
PHP no es un "servidor" .. es un interprete que .. montado en ambiente "web" con un servidor HTTP es llamado por este (Apache en tu caso) cada vez que se solicita una página .php (o la extensión que tenga asignada al interprete PHP) ...
A su vez .. PHP puede ser ejecutado bajo ese servidor HTTP como módulo: esto es; sólo se "levanta" al interprete PHP una sóla vez al inicio del servidor HTTP (Apache) y se queda "residente" en memoria en espera de peticiones del servidor HTTP (pero todo esto en el lado del servidor y entre ellos ). En modo CGI, PHP es "levantado" a cada petición de una página .php y es "matado" el proceso al terminar el script ...
A nivel de rendimiento (no es el caso pero ya puestos) .. El tiempo de proceso de "levantar" a PHP cada vez que se pide una pagina (en modo CGI) es ahorrado a costa de más recursos del servidor (memoria pricipalmente) en modo Módulo de Apache.
Mysql como ya sabes es un "servidor" própio .. funciona de forma independiente y es accesado por quien sea .. en tu caso por PHP pues es un lenguaje de programación del lado del servidor que tiene dichas funcionalidades .. (bajo la misma filosofia .. una apliación tuya en PHP puede acceder a Msyql, PostgreSQL, SQL Server .. etc y todo en un mismo script (flujo de programa) ..)
Con el servidor Mysql (o el que sea) se "habla" con el .. en algún lenguaje .. en este caso es en "SQL" Leguaje estrucurado de consultas (o algo así dice la teoría). PHP para ello te pone a tu disposición variadas funciones entre ellas las más básicas para "conectarte" a tu servidor Msyql (en el HOST, que corra y puerto y usando el USER y PASS que tengas habilitado) .. y la función de "ejecutar" una consulta SQL (o tal vez mejor dicho "mandarle una sentencia SQL al servidor en este caso Mysql) .. Me refiero a funciones como mysql_connect() para conectarte y mysql_query() para que ejecutes tu SQL ..
El resultado de una ejecución de una consulta es recogido por PHP (integramente) y gestionado por este .. para eso .. Msyql le devuelve un "ID" de conexexion (link que llaman también) y un "Puntero" si se ejecutó alguna consulta para que puedas aplicar otras funciones en PHP para obtener tu "record set" generado por tu consulta en un array, o un objeto .. por ejemplo y tratarlo como variables simples en tu código PHP.
Bajo la misma filosofia .. PHP "habla" con otros servidores .. ejemplos son: IMAP (para sevidores de e-mail) , Sockets (para conexiones directas a un Servidor cualquiera siempre y cuando tu implementes el protocolo a usar o uses el que use el servidor al que conectas ..), SOAP ("web services") .. etc.
Tambien PHP interactua con el sistema de archivos del servidor (para leer y escribir) .. el cual lo accede PHP directamente "bajo" el usuario que corra Apache (si está como módulo será el mismo y con los mismos permisos que Apache, si está como CGI .. con el que se le otorge ..)
En general.. así funcionan la mayoria de lenguajes de "scripting" como es PHP .. aunque PHP ya "pasó" esa barrera y puede ser ejecutado como un interprete cualquiera sin necesidad de un servidor HTTP caso de correr PHP en modo "CLI" (command Line Interface al puro estilo Pyton, Perl .. etc) o con interface GTK con PHP-GTK ..
Sobre los diagramas (graficos) de flujo de datos entre cliente-servidor .. y teoría en general, puedes ver algo en:
http://www.openmymind.net/php/guide/tut/concepts.php
(jeje .. curioso el nombre del dominio xD)
Un saludo,