Ben URL'leri işleyen bir komut dosyası bellek kullanımını izlemek için çalışıyorum. Temel fikir, makul bir tampon bir çoklu cURL işleyicisi başka bir URL eklemeden önce var olduğunu kontrol etmektir. Ben çok işleyicisi çalıştığı gibi bir URL'ler verilerini işleyen bir 'yuvarlanan cURL' kavramını kullanıyorum. Bu ben, her seferinde bir havuz mevcut bir URL süreçlerini yeni bir URL ekleme ve kaldırılır aktif N bağlantıları tutmak anlamına gelir.
Ben bazı olumlu sonuçlar memory_get_usage()
kullandım. real_usage
bayrağı ekleme ('sistem' hafıza ve 'emalloc' bellek arasındaki farkı çok net değil, ancak sistem büyük numaralarını gösterir) yardımcı oldu. URL'ler sonra aşağı URL set tükenmiş olarak eklenir gibi memory_get_usage()
kadar rampa yok. Ancak, ben sadece benim son hafızası onay ~ 18M olmak 32M sınırını aştı.
Ben, her seferinde bir çoklu cURL sinyallerini bellek kullanımını yoklamak bir istek döndü. Birden fazla kişi aynı anda dönebilir yana, URL'lerin bir demet verileri aynı anda döndü ve aslında bellek kullanımını 14M atladı bir şans var. memory_get_usage()
doğru Ancak, eğer, o ne oluyor sanırım.
[Update: Sanırım sormadan önce daha fazla testler var mı, arttı php bellek sınırı (ama komut aynı 'güvenli' bir miktar sol) ve benim öz aşağıda bildirilen yaptığı atlayışla bellek kullanımı dayatılan 32M üzerinden için 25M sınırı. Sonra, beklendiği gibi yavaş yavaş eklenirken değil URL'ler gibi aşağı rampalı. Ama ben soruyu bırakacağım: bu yapmak için doğru yolu var mı]?
I memory_get_usage()
bu şekilde güvenebilir miyiz? (Ben bazı komut kabuk komutları çıkışını ayrıştırmak gördüm) bellek kullanımını almak için daha iyi bir alternatif yöntemler var mı?