Devo verificare il valore restituito da ini_get('memory_limit')
e aumentare il limite di memoria se è inferiore a una determinata soglia, tuttavia questa chiamata ini_get('memory_limit')
restituisce valori stringa come "128M" anziché numeri interi.C'è un modo semplice in PHP per convertire da stringhe come '256M', '180K', '4G' ai loro interi interi?
So che posso scrivere una funzione per analizzare queste stringhe (prendendo caso e finali 'B in considerazione) come ho scritto numerose volte:
function int_from_bytestring ($byteString) {
preg_match('/^\s*([0-9.]+)\s*([KMGTPE])B?\s*$/i', $byteString, $matches);
$num = (float)$matches[1];
switch (strtoupper($matches[2])) {
case 'E':
$num = $num * 1024;
case 'P':
$num = $num * 1024;
case 'T':
$num = $num * 1024;
case 'G':
$num = $num * 1024;
case 'M':
$num = $num * 1024;
case 'K':
$num = $num * 1024;
}
return intval($num);
}
Tuttavia, questo diventa noioso e questo mi sembra uno di quelle cose casuali che esisterebbero già in PHP, anche se non l'ho mai trovato. Qualcuno sa di un modo integrato per analizzare queste stringhe di quantità di byte?
Lo stesso problema della risposta di John: non gestisce il trailing opzionale B. – cletus
Sì, è vero. Lo stavo fornendo principalmente per illustrare come il manuale PHP afferma che è fatto. Questo funzionerebbe se volessi analizzare solo i risultati di 'ini_get()', altrimenti dovresti modificarlo da solo. La risposta breve alla domanda dei posters è "No, non esiste un metodo integrato". – zombat
Stavo cercando queste informazioni nella descrizione dei valori ini e in qualsiasi altro luogo oltre ai documenti per la funzione 'ini_get()'. Grazie per averlo trovato. –