As PHP version 5.5 is no longer supported by the community, we strongly recommend new apps use the PHP 7 runtime.

Sockets API for PHP 5 Overview


Traffic from sockets is billed as outgoing bandwidth. App Engine supports outbound sockets using methods from the standard PHP library such as fsockopen. For supported options, calls to socket_get_option will return a mock value and calls to socket_set_option will be silently ignored. Errors will continue to be raised for unsupported options. The supported options are:

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

Limitations and restrictions

Socket support in App Engine has the following limitations:

  • You cannot create a listen socket; you can only create outbound sockets.
  • FTP is not supported.
  • You can only use TCP or UDP; arbitrary protocols are not allowed.
  • You cannot bind to specific IP addresses or ports.
  • Port 25 (SMTP) is blocked; you can still use authenticated SMTP on the submission port 587.
  • Private, broadcast, multicast, and Google IP ranges are blocked, except those listed below:

    • Google Public DNS: 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888, 2001:4860:4860::8844 port 53
    • Gmail SMTPS: smtp.gmail.com port 465 and 587
    • Gmail POP3S: pop.gmail.com port 995
    • Gmail IMAPS: imap.gmail.com port 993
  • Socket descriptors are associated with the App Engine app that created them and are non-transferable (cannot be used by other apps).

  • Sockets may be reclaimed after 2 minutes of inactivity; any socket operation keeps the socket alive for a further 2 minutes.

    Using sockets with the development server

    You can run and test code using sockets on the development server, without using any special command line parameters.