2016-03-19 12 views
0

Kurulum, PHP-FPM kullanarak aynı sunucu üzerinde çalışan iki ayrı PHP projesidir. Halihazırda, CURL ile HTTP istekleri yaparak JSON üzerinden birbirleriyle "konuşurlar".PHP işleminde PHP-FPM kullanımı

Burada sorun cURL ve web sunucusu yükünün zaman kaybıdır. Diğer tüm program orada olduğunda, geçerli olanın hemen üstünde bir klasörde. Öyleyse neden cURL ve HTTP ile uzun yol gidin? İşin sırrı, diğer projeye bir dosya ekleyemem, çünkü otomatik yükleyiciler çarpışıyor ve büyük bir karışıklık yaratıyor. Bu nedenle ayrı süreçlere ihtiyaç duyarlar ve çok fazla paylaşmazlar.

Sorunu çözmeyi önerdiğim şey, PHP işlemimin bağlanabileceği bir soketi dinleyen ve node-phpfpm modülünü kullanarak PHP-FPM'ye doğrudan istekte bulunabilen bir Node.js sunucusu oluşturmaktır. . Bu sorunu çözerken, kendime neden bu Node.js proxy'sinin gerekli olduğunu soruyorum.

Doğrudan PHP'den yeni bir FPM isteği yapmanın bir yolu olmalı, ancak bulamadım.

CLI yürütülebilir dosyasını exec() ile de kullanabileceğimi biliyorum, ancak bu hiç de hoş değil. Daha spesifik olmak gerekirse, exec() ile istek verilerini iletmek neredeyse imkansızdır.

Örneğin, bu kütüphaneyi kullanan doğrudan UNIX veya TCP/IP soketi sayesinde PHP-FPM örneğine PHP script bir istek yapabilirsiniz
+0

Bir sürü çalışma yapmadan HTTP istekleri en verimli şekilde üretilir. Bir düğüm proxy'si eklemek gerçekten sizin için o kadar fazla bir şey yapmaz, sonuçta PHP-FPM kullanıyorsanız, muhtemelen Nginx gibi bir ters proxy ile ön cephede bulunuyorsunuz. – doublesharp

cevap

1

:

<?php 

use EBernhardson\FastCGI\Client as FastCGIClient; 
use EBernhardson\FastCGI\CommunicationException; 

$client = new FastCGIClient('/var/run/php5-fpm.sock'); 

try { 
    $client->request([ 
     'REQUEST_METHOD' => 'POST', 
     'SCRIPT_FILENAME' => '/full/path/to/script.php', 
    ], $postBody); 
    $response = $client->response(); 
} catch (CommunicationException $e) { 
    // Handle exception 
} 
: readme dayalı https://github.com/ebernhardson/fastcgi

Örnek kod,

Göz önünde bulundurmanız gereken başka kütüphaneler vardır: https://packagist.org/search/?q=fastcgi

+0

Teşekkürler! Yazdıktan hemen sonra bahsettiğin kütüphanenin bir kopyasını buldum. Bir uzantı olsa daha güzel olurdu. Web sunucusu tarafında nasıl bağlanılacağını belirleme fikrini sevmiyorum. Yinelenen yapılandırma her zaman sorun çıkarır. – rinu

+0

Böyle bir seçenek var gibi görünüyor, çünkü PHP-FPM SAPI Apache modülünün yaptığı gibi pek çok API işlevini ortaya çıkarmaz. Örneğin, mod_php'de çalışan komut dosyası, http://php.net/manual/en/function.virtual.php. Işlevini kullanarak iç alt sorgulama yapabilir. –

İlgili konular