Consideraciones:

EL sistema en cuestión es la base de un sistema SAAS, el problema principal son los escenarios cambiantes.

Para que una solución de antipcopia en PHP funcione, debe considerar factores que estan fuera de nuestro control:

1 ) La pc virtual debe tener salida a internet con latencia normal.
2 ) Por lo general los clientes usan configuraciones inseguras.
3 ) Si el cliente tiene el software instalado, deberia tener lso datos en su servidor pero este no es el caso. Parte de NUESTROS servicios son alojar sus datos. En la practica las soluciones simples son:

1 ) EN SAAS solo tener la instalación de nuestro servidor operativo.
2 ) Usar un hardcoded los datos del calificador.
3 ) En lo posible usar encoders para las licencias y archivos importantes
4 ) Hacer soluciones simples con factor de supervivencia.
5 ) Si usamos soluciones del cliente, hostearlo en nuestro propio server. Un server es tan bueno como su admin, y la mayoría de clientes o no tienen admin de servers o estan perdidos en el espacio.

El principal problema que veo en toda este ejemplo, es el escenario. En la práctica la licencia podría derivar de un numero de serie / macaddress, y en la practica no muchos clientes tienen pc virtuales.

Es posible el modelo actual, y es sostenible. Sin embargo, mi sugerencia sería POR RENDIMIENTO tener tanto la palabra viva, como las pc virtuales bloqueadas, en el calificador. Es mucho mas rapido leer:

function palabraviva($numcliente){
if ($numcliente==1) return “silla”;
if ($numcliente==2) return “mesa”;
if ($numcliente==3) return “cuaderno”;
} // palabra viva

A la larga, el problema final es la tendencia de las empresas a matar moscas a cañonazos.

En un caso de seguridad mayor, como el exigido en lo relacionado con la vida humana (software para hospitales), pondría incluso una funcion que enviara correo al administrador por calificadores erroneos. En el caso de un sistema de alto rendimiento, quizá haría un cachè en variables de sesión.

Es un principio, y funcional.