PDA

Pogčedajte punu verziju : shmop_open, shmop_write... locking mehanizmi???


LiquidBrain
18. 02. 2009., 16:48
Pozdrav...

Da li neko ima iskustva sa shared memorijom u php-u. Naime imam sledeci problem, potreban mi je mehanizam za lockovanje koji radi i pod windowsom i linuxom...

Dakle ako uzmemo sledeci kod za primer:

<?php

// Create 100 byte shared memory block with system id of 0xff3
$shm_id = shmop_open(0xff3, "c", 0644, 100);
if (!$shm_id) {
echo "Couldn't create shared memory segment\n";
}

// Get shared memory block's size
$shm_size = shmop_size($shm_id);
echo "SHM Block Size: " . $shm_size . " has been created.\n";

// Lets write a test string into shared memory
$shm_bytes_written = shmop_write($shm_id, "my shared memory block", 0);
if ($shm_bytes_written != strlen("my shared memory block")) {
echo "Couldn't write the entire length of data\n";
}

// Now lets read the string back
$my_string = shmop_read($shm_id, 0, $shm_size);
if (!$my_string) {
echo "Couldn't read from shared memory block\n";
}
echo "The data inside shared memory was: " . $my_string . "\n";

//Now lets delete the block and close the shared memory segment
if (!shmop_delete($shm_id)) {
echo "Couldn't mark shared memory block for deletion.";
}
shmop_close($shm_id);

?>



Da li postoji neki nacin za lockovanje bez koriscenja fajlova, znaci ako koristim ftok i sem_* funkcije sem_* ne radi pod windowsom... A ne zelim da kreiram bilo kakav fajl na fajlsistemu...

Svaki predlog je dobrodosao...

Hvala.

LiquidBrain
23. 02. 2009., 00:44
Neko?

bluesman
23. 02. 2009., 02:57
Ja nikada nisam ni probao ove shared memory funkcije, pa me je sada zainteresovalo te sam pogledao u manualu (http://www.php.net/manual/en/ref.shmop.php), i malo pročitao komentare... koliko vidim i ostali komentarišu da te funkcije nemaju sistem lockovanja i da za te stvari treba tražiti alternativna rešenja.

LiquidBrain
23. 02. 2009., 15:59
Uh, to sam znao, procitao manual od pocetka do kraja, i tako par puta... a nikako da nadjem resenje...

Jebaga... Ostace projekat bez windows warijante, ili cu koristiti neki alternativni paket da bi to radilo pod windozom...

Thanks anywayz :)