If you use Gearman in your PHP projects for parallel processing, and just upgraded your PHP version to PHP7 you will quickly realize that none of your workers are well working anymore.
Or if you are setting up a new Ubuntu server with PHP7 you will soon realize that there is currently no upgraded package to quickly get gearman setup.
Well fear not, in this quick guide I will show you how to make the required updates so you can get up and running real quick.
In order to make sure we have a seamless installation with a fresh server I will list the common commands, but you can start at a different point if you think you already have certain components installed.
All commands should be run as root user or with sudo.
1. Install and update the Gearman PPA
Lets install the software-properties-common package and add the gearman–developers ppa to our repository and make sure it is updated.
sudo apt-get install software-properties-common sudo add-apt-repository ppa:gearman-developers/ppa sudo apt-get update
2. Install Gearman Job Server and some other required components and tools
We will be installing the gearman–job–server and libgearman–dev so that we can have the actual gearman server installed aswell as the libraries to compile the PHP module. For this we install PHP7 dev libary aswell as a few tools we will need. Once these are installed lets go ahead and do an upgrade.
sudo apt-get install gearman-job-server libgearman-dev php7.0-dev php-pear wget unzip re2c sudo apt-get upgrade
3. Download, compile the gearman pecl module and add to php.ini
cd /tmp/ sudo wget https://github.com/wcgallego/pecl-gearman/archive/master.zip unzip master.zip cd pecl-gearman-master sudo phpize ./configure sudo make sudo make install echo "extension=gearman.so" | sudo tee /etc/php/7.0/mods-available/gearman.ini sudo phpenmod -v ALL -s ALL gearman
4. Restart webserver or PHP FPM
sudo service php7.0-fpm restart sudo service apache2 restart
If you are running a different version of PHP make sure you make the appropriate changes to the commands or directories mentioned above. ie “/etc/php/7.0/” to “/etc/php/7.1/” etc.