Nasıl ben daha sonra durumunu kontrol etmek için proc_open bir süreç kaynak kaydedebilirsiniz?

2 Cevap java

I php üzerine ubuntu sunucusu aracılığıyla bir java sürecini çalışan bir sh script koşuyorum. Ben süreci çalıştırmak için proc_open kullanıyorum. genellikle Akışı gibi gider:

  • bir sayfayı talep ->
  • (o bitirene kadar) komut çalıştırır ->
  • sonuç sayfası.

Benim durumumda komut bitene kadar sunucu (o yüzden yapamam bazen saat sürer) beklemek olmaz böylece komut paralel olarak çalışır, bu yüzden daha sonra (sürecinin durumu veya onu takip etmek nasılsa o kaynak kaydetmek gerekir sadece) onu durdurma.

Kaynak türü "süreç" olduğunu, onu almak için bu işlevi get_resource_type kullanılır.

Dizgeleştirir Bu durumda çalışmak olmaz - kaynak (Parametreler kutusunun içindeki http://il2.php.net/manual/en/function.serialize.php bakabilirsiniz) bunun için bir olağanüstü.

Benim hedef iyi bir süreç elliyor. Birisi i işlem elleçleme yapacağını kaynak veya başka bir şekilde nasıl kullanabileceğinizi biliyor.

2 Cevap

PHP daha sonra kullanılmak üzere kaynak türlerini depolamak olamaz. Yapmanız gereken asenkron iletişim çeşit uygulamak - belki bir dosya, bir durumu bilgilerini ve diğer bir okur, bir paylaşımlı bellek, bir adlandırılmış yöneltme, yazıyor ...

Ben pcntl extension içine bakmak istiyorum. İpucu: Çatallanan güvenlik nedenleriyle bir web sunucu ortamında mümkün değildir.

Benim durumumda komut komut bitene kadar böylece sunucu (bu yüzden yapamam bazen saat sürer) beklemek olmaz paralel olarak çalışır ..

Bu kendi başına bir problem olmamalı. Sen kolayca sürece bir web sunucusundan başlatılan değil gibi, uzun süren bir php-süreci olabilir. Eğer bir web uygulamasından sürecini başlatmak gerekirse, ben bir veritabanı tablosunda bir giriş eklemek, ve sonra bir cronjob bu sıra denetleyen bir komut dosyasını çalıştırın ve işlem yapmak var öneririm.