O exec yoluyla çalıştırılan eğer PHP komut dosyası, oturumunu korumak mı?

3 Cevap php

Ben ebeveyn bu çocuk komut dosyasını başlatır bir başarı ile geri geliyor, böylece başka bir PHP komut dosyası bir PHP komut dosyası çalıştırmak istiyorum.

Ebeveyn Ben oturumları kullanıyorum tarayıcı başlatılacaktır. Çocuk komut exec üzerinden çalıştırırsanız aynı oturum ve oturum değişkenleri yararlanmak mümkün olacak mı?

Herhangi bir yardım için teşekkür ederiz

Scenario

Ben AJAX ile üst kapalı kovuyorum. Bunu yaptıktan sonra ben çocuk çalıştırmak ve geri gelmek için parent istiyorum. Çocuk komut tamamlamak için bir süre alacaktır. Ebeveyn bu çocuğu çalıştırmak olduğunu bildiren bir başarı dönecektir. Kullanıcı daha sonra başka bir sayfaya yönlendirileceksiniz.

3 Cevap

Diğerleri de söylediğim gibi, bu iş olmaz.

Ama, sen yapabilirsin ignore_user_abort( true );

Kullanıcı tarayıcısını kapattığında bile bu çalışmasını size komut devam edecektir.

Yani, ignore_user_abort, bu yüzden oturum değişkenler ve her şeyi almak, ve ince olmalıdır üst içinde büyük çocuk komut dosyası içerir.

Eğer bir PHP komut dosyası bir PHP komut dosyası çalıştırmak istiyorsanız, neden sadece yapın:

require 'child.php';

?

Eğer arka planda bir şeyler yapmak gerekiyorsa, isteği ateşlemesi için AJAX kullanabilirsiniz.

Edit: Orada bir AJAX isteği uzun soluklu olamazdı hiçbir sebep ama PHP için gerçekten tasarlanmış şeylerin alanı dışında alıyoruz. Ama yine de, bir AJAX isteği kapalı yangın. Geri gelmek için 20 dakika sürer, hiç drama.

Alternatif bir AJAX isteği her 15 saniyede (bir sayı seçin) Eğer başladım ne durumunu kontrol etmek için kapalı atabileceği.

Gerçekten görevlerini uzun süre çalışan için muhtemelen bir "ateş ve unut" almak yaklaşım zorunda gidiyoruz. Başlamak ve hemen dönmek. Ama oturum bilgilerini olmaz. Bunu saklamak gerekir.

Ben İşler tablo gibi sebat mekanizması çeşit sahip öneririm:

  • Meslek: id, started_by, durumu (tam, koşma, başlamış değil), started_when, completed_when.

ve yerine bir exec () başlamış ve onları başlamak gerekir işler arar bir cron işi var gibi işleri kapalı ateş daha. Bu bir Webserver tetikleyen bir yaklaşım daha az kırılgan olacaktır.

Ayrıca bir iş henüz bitmiş olup olmadığını sormak gerekiyor raporlama statüsüne sahip olacak.

Cevap yok