Soru PHP olmayan engelleme uygulamaları yaz


Engelleme olmayan uygulamalar yazmak istiyorum. Apache2'yi kullanıyorum ama nginx'i ve apache işlemleriyle ilgili avantajını okudum. Nginx için apache'yi değiştirmeyi düşünüyorum. Sorum şu: php ve nginx ile bloke olmayan web uygulamaları yazmak mümkün mü?

Ya da nginx ile uwsgi veya gunicorn gibi bir ters proxy kullanarak, python ile bunu denemek ve daha iyi bir fikirdir? Veya nodejs'i öğrenmek için bir çözüm mü?


21
2018-05-01 05:29


Menşei




Cevaplar:


PHP'de bloke olmayan uygulamaların yazılması mümkündür, ancak muhtemelen bunu yapmak için en iyi ortam değildir, çünkü bunu akılda tutarak oluşturulmamıştır! Proses kontrol kütüphanesini kullanarak çocuk süreçleriniz üzerinde oldukça iyi bir kontrol elde edersiniz. Süreç Denetim ama kesinlikle size diğer ortamların size verebileceği kullanım kolaylığı sunmuyor!

Python'u çok iyi bilmiyorum ama kişisel olarak tavsiye ederim. nodejs! Oldukça yeni bir teknoloji, bu doğru, ama her şey orada engel değil ve bu şekilde olması gerekiyordu! Temel olarak, sahip olduğunuz tek bir iş parçacığı (bu haberlerde istediğiniz gibi genişletebilirsiniz) ve tam anlamıyla her şey (bunu farklı bir şekilde anlatmanız dışında) olay odaklı olacak ve işlem kuyruğuna devam etmek için alan bırakacaksınız. beklenen!

Nodejs'in öğrenmesi gerçekten çok kolay, eğer web uygulamalarına rastlarsanız, javascript'i zaten biliyorsunuzdur! Hala belgelenmemiş durumda, ancak hemen indirip kullanabileceğiniz birçok modül kullanıma hazır!


13
2018-05-01 05:43



@DarthVader javascript, nasıl yaklaşacağınızı bildikten sonra gerçekten güçlü bir dildir! Bir sürü geri dönüşün olacağını biliyorsun, değil mi? Önceden bildiğinizi bilmeniz, farklı jQuery işlevselliğine ihtiyaç duyan ortalama web geliştiriciden farklı düşünmenize olanak tanıyor: D gerçekten de nodejs'in sadece bir oyuncak uygulama anlaşması olduğunu düşünmüyorum! Her zaman olduğu gibi her şey, ihtiyacınız olan şeylere bağlıdır! Ama garanti edebilirim, js'ye indirilen büyük projeleri gördüm! - Ivo
@DarthVader python hakkında bazı yorumlar? - Gonzalo Bahamondez
hayır öyle değil. js'yi c # veya java ile karşılaştırabilir misin? bu farklı bir dildir. - DarthVader
@Lucas düğümünde gelişmekte oldukça sıra dışı ... bu kesinlikle doğru ve birçok proje hedefe bile sığmıyor! ama bir kere doğru araç olmadığını biliyorsunuz, onunla gitmeyi denememelisiniz, diğer platformlar daha iyi olacak! Tecrübemde, hedefe uyacak çok az sayıda uygulama var, tam olarak olay odaklı programlamaya ya da genellikle bir şeyin olmasını bekleyen çok fazla zaman harcayan programlara dayanan uygulamalar! Bu sadece performansı optimize etmekle kalmaz, aynı zamanda bakışa düğüm getirir ... sadece benim düşüncem: P - Ivo
Büyük uygulamaların yazılmasının node.js.'de daha kolay olduğunu iddia ediyorum. Paket yöneticisi npm, farklı bileşenleri modüle etmeyi ve gittiğinizde birikmeyi çok daha kolay hale getirir. Ayrıca voxer.com büyük bir node.js kurulumu çalıştırıyor ve iyi görünüyor - Noah


Henüz raptiye bakmadım, ama bu cevabı PHP'de engellenmeyen uygulamaları destekleyen başka bir çerçeveye işaret etmek için yazıyorum:

Tepki http://reactphp.org/

Bir sunucuyu HTTP'ye veya WebSocket'a bağlamayı destekler ve HTTP üzerinden proxy_pass isteklerini ileterek Nginx gibi web sunucusu yazılımı ile kullanılabilir. Web sunucusunda HTTPS'yi bile kullanabilir ve şifrelenmemiş olarak iletebilirsiniz. (React'ta SSL desteği eksik.)

Henüz en azından proje akışında değil, henüz FastCGI veya UWSGI desteği bulunmuyor.

Stil node.js'ye benzerdir, olaylara PHP 5.3+ kapaklar eklersiniz ve bloke edici olmayan soketleri şeffaf bir şekilde kullanır. Bu web sitesinde iyi örnekler var, bu yüzden onları özel olarak kullanmadığın için onları tekrarlamayacağım.

GÜNCELLEME: Sadece raptiye web sitesine baktım ve engellemeyi yazmamak için bir çerçeve veya araç değil PHP soru başlığında talep edilen başvurular. Yine de bir çözümün bir parçası olarak yararlı olurdu gibi görünüyor.


5
2018-06-20 07:21





Swoole engelleme olmayan php uygulaması yazmak için iyi bir seçimdir

İşte bir örnek:

$fp = stream_socket_client("tcp://127.0.0.1:80", $code, $msg, 3);
$http_request = "GET /index.html HTTP/1.1\r\n\r\n";
fwrite($fp, $http_request);
swoole_event_add($fp, function($fp){
    echo fread($fp, 8192);
    swoole_event_del($fp);
    fclose($fp);
});
swoole_timer_after(2000, function() {
    echo "2000ms timeout\n";
});
swoole_timer_tick(1000, function() {
    echo "1000ms interval\n";
});

5
2017-10-28 10:50





Bildiğim kadarıyla, engelleme olmayan uygulamalar oluşturmak için çeşitli kütüphaneler mevcut.

  1. Skyray, C dilinde PHP yazarı için bir ağ kütüphanesi http://github.com/bixuehujin/skyray
  2. reaphp, saf PHP'de yazılmış yukarıda belirtildiği gibi
  3. swoole, https://github.com/swoole/swoole-src
  4. phpdaemon, https://github.com/kakserpom/phpdaemon

BTW: Skyray'ın ve Swoole'un geliştiricilerinden biriyim.


4
2018-04-25 09:07





Çok fazla çaba harcamadan engelleme olmayan bir uygulamaya sahip olmak istiyorsanız, kullanmayı deneyebilirsiniz. raptiye. Uygulamalarımın birinde kullanıyorum ve harika çalışıyor. Yazarın hakkında daha fazla bilgi edinebilirsiniz. Blog yazısı. Bunu mevcut projenin üstüne ekledim, neredeyse mevcut kodu değiştirmem.

Düğümü kullanmak istiyorsanız, bunun iş için doğru araç olduğundan emin olun. Yığın taşma sorularını kontrol edin, çünkü bu soruya zaten cevaplar var. Uygulama fikrinizin düğüm yeteneklerine uyup uymadığını kendinize sorun. Deneyin Neden ve ne zaman js düğümünü kullanmalı? ve NodeJS'yi ne zaman kullanacağımıza nasıl karar verilir? Örneğin.


2
2018-05-01 06:00