Skip to content

Files

Failed to load latest commit information.

Latest commit

 Cannot retrieve latest commit at this time.

History

History

php

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

#Overview

This directory contains source code for PHP implementation of gRPC layered on shared C library.

#Status

Beta

Environment

Prerequisite: PHP 5.5 or later, phpunit, pecl

Linux:

$ sudo apt-get install php5 php5-dev phpunit php-pear

Mac OS X:

$ curl https://phar.phpunit.de/phpunit.phar -o phpunit.phar
$ chmod +x phpunit.phar
$ sudo mv phpunit.phar /usr/local/bin/phpunit

$ curl -O http://pear.php.net/go-pear.phar
$ sudo php -d detect_unicode=0 go-pear.phar

Quick Install

Linux (Debian):

Add Debian jessie-backports to your sources.list file. Example:

echo "deb http://http.debian.net/debian jessie-backports main" | \
sudo tee -a /etc/apt/sources.list

Install the gRPC Debian package

sudo apt-get update
sudo apt-get install libgrpc-dev

Install the gRPC PHP extension

sudo pecl install grpc-beta

Mac OS X:

Install homebrew. Example:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install the gRPC core library and the PHP extension in one step

$ curl -fsSL https://goo.gl/getgrpc | bash -s php

This will download and run the gRPC install script and compile the gRPC PHP extension.

Build from Source

Clone this repository

$ git clone https://github.com/grpc/grpc.git

Build and install the gRPC C core libraries

$ cd grpc
$ git pull --recurse-submodules && git submodule update --init --recursive
$ make
$ sudo make install

Note: you may encounter a warning about the Protobuf compiler protoc 3.0.0+ not being installed. The following might help, and will be useful later on when we need to compile the protoc-gen-php tool.

$ cd grpc/third_party/protobuf
$ sudo make install   # 'make' should have been run by core grpc

Install the gRPC PHP extension

$ sudo pecl install grpc-beta

OR

$ cd grpc/src/php/ext/grpc
$ phpize
$ ./configure
$ make
$ sudo make install

Add this line to your php.ini file, e.g. /etc/php5/cli/php.ini

extension=grpc.so

Install Composer

$ cd grpc/src/php
$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
$ composer install

Unit Tests

Run unit tests

$ cd grpc/src/php
$ ./bin/run_tests.sh

Generated Code Tests

Install protoc-gen-php

$ cd grpc/src/php/vendor/datto/protobuf-php
$ gem install rake ronn
$ rake pear:package version=1.0
$ sudo pear install Protobuf-1.0.tgz

Generate client stub code

$ cd grpc/src/php
$ ./bin/generate_proto_php.sh

Run a local server serving the math services

  • Please see Node on how to run an example server
$ cd grpc/src/node
$ npm install
$ nodejs examples/math_server.js

Run the generated code tests

$ cd grpc/src/php
$ ./bin/run_gen_code_test.sh

Use the gRPC PHP extension with Apache

Install apache2, in addition to php5 above

$ sudo apt-get install apache2

Add this line to your php.ini file, e.g. /etc/php5/apache2/php.ini

extension=grpc.so

Restart apache

$ sudo service apache2 restart

Make sure the Node math server is still running, as above.

$ cd grpc/src/node
$ nodejs examples/math_server.js

Make sure you have run composer install to generate the vendor/autoload.php file

$ composer install

Make sure you have generated the client stub math.php

$ ./bin/generate_proto_php.sh

Copy the math_client.php file into your Apache document root, e.g.

$ cp tests/generated_code/math_client.php /var/www/html

You may have to fix the first two lines to point the includes to your installation:

include 'vendor/autoload.php';
include 'tests/generated_code/math.php';

Connect to localhost/math_client.php in your browser, or run this from command line:

$ curl localhost/math_client.php

Use the gRPC PHP extension with Nginx/PHP-FPM

Install nginx and php5-fpm, in addition to php5 above

$ sudo apt-get install nginx php5-fpm

Add this line to your php.ini file, e.g. /etc/php5/fpm/php.ini

extension=grpc.so

Uncomment the following lines in your /etc/nginx/sites-available/default file:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
}

Restart nginx and php-fpm

$ sudo service nginx restart
$ sudo service php5-fpm restart

Make sure the Node math server is still running, as above.

$ cd grpc/src/node
$ nodejs examples/math_server.js

Make sure you have run composer install to generate the vendor/autoload.php file

$ composer install

Make sure you have generated the client stub math.php

$ ./bin/generate_proto_php.sh

Copy the math_client.php file into your Nginx document root, e.g.

$ cp tests/generated_code/math_client.php /var/www/html

You may have to fix the first two lines to point the includes to your installation:

include 'vendor/autoload.php';
include 'tests/generated_code/math.php';

Connect to localhost/math_client.php in your browser, or run this from command line:

$ curl localhost/math_client.php