Какова возможность Str::random создавать одну и ту же строку для каждого экземпляра приложения в многосерверном веб-прилPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Какова возможность Str::random создавать одну и ту же строку для каждого экземпляра приложения в многосерверном веб-прил

Сообщение Anonymous »

Я создаю эту модель в своем приложении Laravel.

Код: Выделить всё

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class ApiKeys extends Model
{
use HasFactory;

const TABLE = 'api_keys';
protected $table = self::TABLE;

public static function boot()
{
parent::boot();

self::creating(function ($model) {
$model->identifier = Str::random(16);
});
}
}

И я хочу, чтобы идентификатор содержал уникальную случайную строку:

Код: Выделить всё

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
public function up(): void
{
Schema::create('api_keys', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('identifier')->unique('unique_identifier');
$table->boolean('active');
$table->timestamps();

});
}

public function down(): void
{
Schema::dropIfExists('api_keys');
}
};

Но мое приложение запускается в нескольких экземплярах за балансировщиком нагрузки:
[img]https:// i.sstatic.net/VCm4KQct.png[/img]

Не приведет ли это к созданию уникальных случайных строк, другими словами, может ли Str::random(16) (и базовая функция openssl_random_bytes) генерирует неуникальную строку, если оба выполняются из нескольких экземпляров?
Чтобы избежать этого, я обычно добавляю имя хоста:

Код: Выделить всё

  $model->identifier = gethostname()."_".Str::random(16);
Но это делает идентификатор некрасивым или даже раскрывает некоторую информацию об инфраструктуре. Как я мог этого избежать?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -app-isnta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»