Why not simply maintain an array as a file.
$fifoArray= unserialize(file_get_contents($fifoFile));
$oldValue= array_pop($fifoArray);//To pop off old value
array_unshift($fifoArray, $newValue);//To push in new value
$fifoStr= serialize($fifoArray);
file_put_contents($fifoArray, $fifoStr, LOCK_EX);
You can do the same thing by just using:
$fifoArray= file($fifoFile);
..same array_pop() and array_unshift() stuff
file_put_contents($fifoFile, $fifoArray, LOCK_EX);
You'll need to check for an empty array, etc.
Waynn Lue wrote:
> I'm trying to build a queue out using FIFO files (someone on the MySQL
> list suggested checking them out instead of using the database), but
> I'm running into a problem because of the synchronous fwrite call.
> Here's the code:
>
> $fifoFile = '/tmp/fifo';
> if (!file_exists($fifoFile)) {
> posix_mkfifo($fifoFile, 0600);
> }
> $fp = fopen($fifoFile, "w");
> fwrite($fp, "content");
> fclose($fp);
>
> But this will block until something actually reads the pipe. Is there
> any way to write to the pipe, then go away as opposed to waiting until
> something consumes it? Otherwise, I may just go back to a database
> table.
>
> Thanks,
> Waynn
--
PHP General Mailing List (
http://www.php.net/)
To unsubscribe, visit:
http://www.php.net/unsub.php