Improve uniqueness loop by adding an exists() call in DisposableFullTextSearch
This commit is contained in:
parent
7397b38763
commit
50cc2be3d1
1 changed files with 8 additions and 3 deletions
|
@ -37,12 +37,17 @@ class DisposableFullTextSearch
|
||||||
{
|
{
|
||||||
$this->db = $database;
|
$this->db = $database;
|
||||||
|
|
||||||
do {
|
|
||||||
// Unique identifier generation. Two DisposableFullTextSearch object should never have the same as the first object destruction
|
// Unique identifier generation. Two DisposableFullTextSearch object should never have the same as the first object destruction
|
||||||
// would delete both check-full-text-search rows before the second object destruction is called, leading to unexpected behavior.
|
// would delete both check-full-text-search rows before the second object destruction is called, leading to unexpected behavior.
|
||||||
|
do {
|
||||||
// Maximum value is indicated by the INT UNSIGNED type of the check-full-text-search.pid field
|
// Maximum value is indicated by the INT UNSIGNED type of the check-full-text-search.pid field
|
||||||
$this->identifier = random_int(0, pow(2, 32) - 1);
|
$this->identifier = random_int(0, pow(2, 32) - 1);
|
||||||
} while($this->db->insert('check-full-text-search', ['pid' => $this->identifier, 'searchtext' => $haystack]));
|
} while($this->db->exists('check-full-text-search', ['pid' => $this->identifier, 'searchtext' => $haystack]));
|
||||||
|
|
||||||
|
// If the `exists()` call fails and return false because the database is unavailable, the `insert()` call will likely fail as well, which means
|
||||||
|
// all subsequent calls to `match()` will return false because the haystack won't have been inserted.
|
||||||
|
// However, at this point there may be bigger problems to worry about.
|
||||||
|
$this->db->insert('check-full-text-search', ['pid' => $this->identifier, 'searchtext' => $haystack]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __destruct()
|
public function __destruct()
|
||||||
|
|
Loading…
Reference in a new issue