PHP pthreads extension

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

If you wish to have POSIX multi-threading you will need the pthreads extension (or the parallel extension for PHP 7.4+). To install the pthreads (https://pecl.php.net/package/pthreads) or parallel (https://pecl.php.net/package/parallel) extension using pecl you are required to use a compiled version of PHP with the the thread safety support flag --enable-maintainer-zts. Currently, the most clean way to do this would be to rebuild the original package with the proper flag.

Check what packages depend on the php package, for example:

pacman -Qii php
:: php-apache: requires php
:: php-apcu: requires php
:: php-pear: requires php

Remove all of them including 'php', for example:

pacman -R php php-apache php-apcu php-pear

Clone Arch Linux's official package repository:

cd /opt/
git clone https://github.com/archlinux/svntogit-packages.git
cd packages/php/repos/extra-x86_64

Change the file named PKGBUILD in this folder to add --enable-maintainer-zts, next to the other extensions. It should look like:

...
--with-xsl=shared \
--with-zip=shared \
--with-zlib \
--enable-maintainer-zts
...

Make the new packages (you may need to edit permissions before):

makepkg -s

Install the packages you removed:

pacman -U \
php-5.5.8-1-x86_64.pkg.tar.xz \
php-apache-5.5.8-1-x86_64.pkg.tar.xz \
php-pear-5.5.8-1-x86_64.pkg.tar.xz \

On some versions of PHP, php-pear is missing and it is needed to run pecl. As adding --with-pear in the file above does not solve it, you will need to install it separately:

cd /opt/packages/
git clone https://aur.archlinux.org/packages/php-pear/
cd php-pear/
makepkg -i

Then install pthreads:

pecl install pthreads

or install parallel for recent PHP versions:

pecl install parallel

If you installed parallel, you will need to edit /etc/php/php.ini and add the parallel extension, it should look like:

...
;extension=odbc
;zend_extension=opcache
extension=parallel
;extension=pdo_dblib
...

Install the 'apcu' package for APC support back

cd ../../../php-apcu/repos/extra-x86_64/
makepkg -si