2013-09-23 14 views
9

Ho uno scenario in cui voglio riutilizzare una classe esistente per compilare le modifiche nel sistema. Le librerie esistenti prendono un puntatore di file che memorizzerà le modifiche per l'uso successivo. Lo scenario corrente prevede l'esecuzione di tali calcoli e quindi l'output immediato della risposta all'output.php: // temp è sicuro per la produzione?

Potrebbe essere sicuro utilizzare php: // temp o php: // risorse di memoria in un ambiente in cui è possibile che due utenti separati eseguano questo metodo contemporaneamente?

pseudo-codice:

$fp = fopen('php://temp','w+'); 
Lib::getUpdates($fp, $user_id); 
rewind($fp); 
$changes = stream_get_contents($fp); 

sono stato googling intorno e hanno trovato alcuni risultati inquietanti ma niente di veramente definitive sull'utilizzo della temperatura o flussi di memoria.

Quindi la domanda è, dovrei abbattere e utilizzare un file temporaneo che garantisca che questo non è un problema? Vorrei evitare di scrivere sul disco, se possibile. L'altra possibilità è di alterare la classe in modo che possa produrre i risultati in una stringa, ma vorrei evitarlo anche se possibile.

EDIT

Secondo Sammitch, questo è ok. Vedi i commenti qui sotto.

+5

'php: // temp' e' php: // memory' sono unici per processo. Non devi preoccuparti di due processi che tentano di utilizzare la stessa memoria nello stesso momento. – Sammitch

+0

Fantastico. Grazie. – Rhinosaurus

+0

Penso che 'php: // temp' userà in modo trasparente un file temporaneo in alcune situazioni comunque – Izkata

risposta

8

php://temp e php://memory sono unici per processo. Non devi preoccuparti di due processi che tentano di utilizzare la stessa memoria nello stesso momento.