Saya memiliki skrip PHP yang, sementara folder berisi file XML, akan memprosesnya ke dalam basis data.
Saat ini, server menjalankan PHP versi 5.3.10 dan ada laporan bug tentang masalah memori yang dipicu oleh ZEND_MM_HEAP
dalam satu lingkaran.
Hal ini menyebabkan PHP tidak membebaskan memori dengan benar, sehingga menyebabkan kesalahan dan skrip macet:
zend_mm_heap is corrupted
Beberapa solusi ditemukan, tetapi saya tidak memiliki akses ke pengaturan server.
Untuk mengatasinya, saya telah menyiapkan skrip bash berikut untuk menangani perulangan, membiarkan skrip PHP hanya bertanggung jawab dengan memroses file XML:
#!/bin/bash
# Check for files to process
# If files are present, call
# the PHP script
DIR="/path/to/dir/with/files"
while [ "$(ls -A $DIR)" ]; do
php /path/to/php/script/myscript.php
done
Tujuan saya sekarang adalah memiliki alokasi memori bash ini terbatas (memori dan memori virtual), sehingga mencegahnya untuk menggantung sistem jika terjadi kesalahan.
Pertanyaan saya adalah:
Bagaimana saya bisa membatasi memori yang digunakan oleh skrip shell ini ke jumlah tertentu?
sumber
export USE_ZEND_ALLOC=0
.Jawaban:
Anda dapat membatasi penggunaan memori dengan Bash Script, melakukan yang berikut.
Batasi penggunaan memori oleh kb (2GB dalam contoh ini):
Batasi penggunaan memori virtual:
Tetapkan batas memori virtual menjadi batas keras, sehingga proses itu akan mati ketika melebihi batas ini:
Saya pikir ini dapat melakukan apa yang Anda inginkan.
sumber