ftok în PHP

Generează o cheie numerică din calea unui fișier, pentru memorie partajată, semafoare și cozi de mesaje.

Sintaxă
ftok(string $filename, string $project_id): int

Ce face ftok

Funcțiile System V (shm_attach, sem_get, msg_get_queue) au nevoie de o cheie numerică pe care toate procesele să o cunoască. ftok o calculează din inode-ul unui fișier existent și un caracter de proiect, deci procese diferite obțin aceeași cheie pentru același fișier.

Funcția nu există pe Windows.

Parametri

Parametru Descriere
$filename Un fișier existent, de obicei chiar scriptul (__FILE__).
$project_id Un singur caracter, ca să ai chei diferite din același fișier.

Ce returnează

Cheia sau -1 la eroare.

Exemple

Exemplul 1: Cheie pentru un semafor

<?php
$cheie = ftok(__FILE__, "a");
$semafor = sem_get($cheie);

sem_acquire($semafor);
echo "Doar un proces rulează această parte (cheie $cheie)";
sem_release($semafor);

Rezultat posibil (necesită extensia sysvsem)

Doar un proces rulează această parte (cheie 1628308297)

Greșeli frecvente

  • Dai un $project_id mai lung de un caracter. Primești eroare: trebuie să fie exact un caracter.

Comenzi înrudite

  • flock: Blochează un fișier ca două scripturi să nu îl modifice în același timp.
  • getmypid: Returnează ID-ul procesului (PID) în care rulează scriptul.