Descripción general de la API de Sockets para PHP 5


Los sockets solo están disponibles para aplicaciones pagadas, y el tráfico de estos se factura como ancho de banda saliente. Los sockets también están limitados por cuotas diarias y por minuto (pico de actividad). App Engine admite sockets salientes con métodos de la biblioteca estándar de PHP, como fsockopen. En las opciones compatibles, las llamadas a socket_get_option mostrarán un valor simulado, y las llamadas a socket_set_option se ignorarán silenciosamente. Se continuarán generando errores para las opciones no admitidas.

Las opciones compatibles son las siguientes:

  • SO_KEEPALIVE
  • SO_DEBUG
  • TCP_NODELAY
  • SO_LINGER
  • SO_OOBINLINE
  • SO_SNDBUF
  • SO_RCVBUF
  • SO_REUSEADDR

Limitaciones y restricciones

La compatibilidad de los sockets en App Engine tiene las siguientes limitaciones:

  • Los sockets solo están disponibles para las aplicaciones pagadas.
  • No puedes crear un socket de escucha; solo puedes crear sockets de ida.
  • FTP no es compatible.
  • Solo puedes usar TCP o UDP; no se permiten protocolos arbitrarios.
  • No puedes establecer una vinculación con puertos o direcciones IP específicos.
  • El puerto 25 (SMTP) está bloqueado; pero aún puedes usar el SMTP autenticado en el puerto de envío 587.
  • Los rangos de IP privado, de emisión, de multidifusión y de Google (excepto los que se incluyen en la lista blanca que se menciona a continuación) están bloqueados:

    • DNS público de Google: 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844 puerto 53
    • SMTP de Gmail: smtp.gmail.com, puertos 465 y 587
    • POP3 de Gmail: pop.gmail.com puerto 995
    • IMAP de Gmail: imap.gmail.com puerto 993
  • Los descriptores de socket están asociados con la aplicación de App Engine que los creó y no se pueden transferir (no pueden usarse en otras apps).

  • Los sockets pueden recuperarse después de 2 minutos de inactividad; cualquier operación de socket lo mantiene en funcionamiento durante otros 2 minutos.

    Cómo usar sockets con el servidor de desarrollo

    Puedes ejecutar y probar el código con sockets en el servidor de desarrollo, sin usar ningún parámetro de línea de comandos especial.