Как получить уникальный экземпляр php-расширения для каждого потока php? - PullRequest
1 голос
/ 08 мая 2019

Друзья мои, у меня сложная задача - создать расширение php (я назову это custom-extension) с помощью libssh2.Расширение должно работать вместе с расширением php.Допустим, у меня есть 100 тем PHP.Как я вижу, все потоки имеют один и тот же экземпляр пользовательского расширения.И, как мне кажется, именно поэтому у меня возникает много проблем, когда я использую более 1 потока.Например, глобальные переменные в пользовательском расширении C-кода будут перезаписаны pthreads.Конечно, я могу использовать __thread, но это не решает проблему.Использование libssh2 в custom-extension делает вещи более сложными.Я не буду предоставлять какой-либо код, потому что я думаю, что это не имеет значения.

Таким образом, вопрос заключается в следующем: можно ли заставить каждый php pthread использовать собственный новый экземпляр пользовательского расширения?Я думаю, что это будет лучше для моего случая, потому что тогда я буду инкапсулировать custom-extension для каждого потока.Также libssh2, используемый в custom-extension, также должен быть новым экземпляром для каждого потока.Таким образом, я могу сэкономить на перезаписи переменных и других ошибках segfaults.

  • Я скомпилировал пользовательское расширение с --enable-pthreads=shared
  • Моя среда Ubuntu 18.04 64bit, PHP-CLI 7.2.2 ЗТС
...