Php script başka bir php komut dosyasını çalıştırmak nasıl yapılır

7 Cevap

Hmmmm ... Tamam, bu yüzden benim önceki python söz tam olarak aynı şeyi yapmaya çalışıyor, ancak php ediyorum. See my previous (answered) question

Yani önceki soruya php script bir şey yapar ve daha sonra aynı sunucudaki başka bir php komut dosyası çalışır, bir şeyler yapar ve sonra (ikinci yazısı hala çalışmalarına devam ederken) sonlandırılıyor söylüyorlar sağlar. Bunu nasıl sağlıyorsunuz? (Benim soru belirsiz ise yorum yapmaktan çekinmeyin ve bunu düzenlemek edeceğiz. Biraz kaotik, heh.)

Bu php script (yani belki benim soruya cevap yerine alt işlemi çalışan sadece open url pitonu yaptığı pasajı edildi önceki soruda gibi kullanabilirsiniz aynı zamanda bir web sayfası olduğunu unutmayınız ... Bu yararlı bilgiler eğer ben bir ipucu yok rağmen, belki de), ben de php deneyimli değilim php farklı ... ve ben her komut bağımsız yapmak istiyorum - böylece ilk php script {[bitirmek eğer (1)]}.

Bunu yapmak için en zarif yolu sizce nedir? Iframe iş yankılanan istiyorsunuz ya da ben farklı bu yapmalıyım?

7 Cevap

Bu, biraz unix / linux-sadece bu paylaşılan web sunucuları üzerinde işe yaramayabilir hack:

file1.php

<?php
$somearg = escapeshellarg('blah');
exec("php file2.php $somearg > /dev/null &");

file2.php

<?php
//do some stuff that will take a while
//$argv should contain 'blah', and also it seems the name of the php file
//this script will continue to run. You might want to set max_execution_time to a sensible value.

Bir kullanıcı php komut dosyası ulaşmak için bir web tarayıcısı kullanarak olacaksa, ben ikinci sayfayı çağırmak için ajax kullanmak istiyorum.

Kullanıcı bile denir ediliyor bilemezsiniz.

AJAX ilgili eğitim için w3schools bakın

Eğer need bu diğer komut çalıştırmak için ise, istemci bağlı olarak akıllıca olmaz.

Ne yaparım (işaret this comment in the PHP documentation) this StackOverflow question için cevap açıklanan tekniği kullanmak ve post-processing gibi diğer komut dosyası içerir olduğunu.

Ancak, bu açıklama, 2006 yılında yazılmış ve işler o zamandan beri değişmiş olabilir. (Ben sadece eğlenmek için yapıyor olacak gibi) tekniğin bir deneyin ve sizin için çalıştığını görmek lütfen :)

Bilgime iyi için, ikinci bir sayfa çalıştırmak için herhangi bir şekilde (AJAX istisna) yoktur. Bildiğim kadarıyla, PHP çoklu Konuları desteklemiyor (Yanılıyorsam beni düzeltin lütfen) ve web 'tek-iş parçacığı' doğası neyse onu yenmek gibi görünüyor.

Daha doğrusu senin özel uygulama bakmak ve iki ayrı sayfa çalıştırmak olması gerekir nedenini bulmak için eğimli olacak - ve o zaman değil yani sürecini yeniden.

Ben bir re-mühendis geliştirme açısından, hem de bir mantık ve uygulama birinden bir baş ağrısı daha az olma sona ereceğini bahis istekli olurdu.

Eğer iş parçacıklı bir uygulama istiyorsanız pcntl_fork içine bakmak gerekir. Ayrıca ignore_user_abort bakmak.

You can do it by placing header('Location: second.php'); at the end of first.php and again at the end of second.php to start executing third.php and so on. Even you can create cycles between two scripts, i.e after ending first.php, second.php will be started and after executing second.php again the first.php, again second.php and so on ............. :p

Ama bu bir tarayıcı bağımlı özelliği ve kaç komut birbiri ardına, tamamen bu tarayıcı yönlendirme izin kaç kez bağlıdır idam edilebilir olduğunu unutmayın. P: Ben mozilla ............. size 23 betikleri anothe ardına yürütür anlamına gelir, 23 yönlendirmelerini sağlar buldu

Bu benim kendi sunucu hatası olabilir, veya talimat zaman belki de yeni tarayıcıları (nasıl ki shtuff eser gerçekten bir yanlısı değilim) yakın bağlantıyı reddeden şüpheli olsa ben, sorun iş benim önceki cevabı alıyorum yaşıyorum .

Bu yöntem sizin için işe yaramazsa, ya this article on pseudo-multi-threading in PHP denemek, ve daha iyi şans varsa bakın :)