Ben diğer mesajlar türetilen ve bu aslında yapmak istediğiniz ne comments düşünüyorum:
I createDir()
kendi yazdığım bir PHP işlevi olduğunu düşünüyorum. Onu doldurur ve bu biraz zaman alabilir - Bu sadece bir dizin yapmak daha fazlasını yapar.
Nedense sonraki komutu önce çalıştırmak alır inanıyorum createDir()
çalışma bitmiş, ve createDir()
kullanarak çağırarak exec()
Bunu önlemek düşündüm etti.
Bu çıkış yolu ise bir açıklamada söyle, ve ben bu cevabı sileceğiz.
Bu createDir()
gerçekten döndürülür sonra çalışmaya devam yapar olası görünüyor oluyor (öyle ise, o zaman biz diyoruz ki 'uyumsuz'). Bu asenkron yapmak için kendi yolumdan gitmek için programcı gerektirecektir. Yani bu varsayımı kontrol edin.
Hatta bu yüzden, exec()
PHP fonksiyonları çağırmak için değil. Bu kabuk komutları (komut istemine yazın çeşitşey) çağırmak içindir. Çoğumuz gözlemledim olarak çok dikkatli olmazsan, o kaçınılmalıdır - risk ne keyfi kabuk komutları çalıştırmak için kullanıcı izin varlık.
Eğer gerçekten tamamlamak için zaman uyumsuz bir fonksiyon için beklemek zorunda yaparsanız, bu yapılabilir yolları bir çift vardır.
Birinci yol uyumsuz fonksiyon bir mükellef şekilde yazılmış olmasını gerektirmektedir. Bazı API'ler, daha sonra diğer bazı şeyler yapmak, daha sonra sapından dönüş durumunu olsun, size bir 'tanıtıcı' verecek olan, bir zaman uyumsuz işi başlayalım. Gibi bir şey:
handle = doThreadedJob(myParam);
# do other stuff
results = getResults(handle);
iş bitene kadar getResults bekleyecekti.
İkinci yol kadar iyi değildir ve API az yararlı olduğunda kullanılabilir. Ne yazık ki, o kadar, bazı iş bitti ipucu ve yoklama bulma meselesi.
while( checkJobIsDone() == false ) {
sleep(some time interval);
}