Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hentikan permintaan melalui pdo

Masalah utama di sini adalah membagikan PID antara permintaan asinkron Anda yang menghasilkan laporan dan skrip yang harus menghentikannya.

Anda bisa mendapatkan PID menggunakan:

    $stmt = $dbh->prepare("SELECT CONNECTION_ID()");
    $stmt->execute();
    $pid = $stmt->fetchColumn();

Dan Anda dapat menggunakan sesuatu seperti php-shared-memory untuk membuat variabel bersama di antara skrip Anda. Jika Anda tidak menggunakan Komposer untuk ketergantungan proyek Anda, perpustakaan ini memiliki rilis mandiri (1.5.0, di sini ).

Contoh penerapan:

<?php

if (!include __DIR__ . '/vendor/autoload.php')
{
    die('You must set up the project dependencies.');
}

use Fuz\Component\SharedMemory\SharedMemory;
use Fuz\Component\SharedMemory\Storage\StorageFile;

// your intializations here

$storage = new StorageFile("/tmp/shared.{$user_id}.sync");
$shared = new SharedMemory($storage);

if (!isset($_POST['cancel_request']))
{
    $stmt = $dbh->prepare("SELECT CONNECTION_ID()");
    $stmt->execute();
    $pid = $stmt->fetchColumn();

    $shared->pid = $pid;

    // your long query here

    $shared->destroyStorage();
}
else
{
    // kills pid
    $pid = $shared->pid;
    if (!is_null($pid))
    {
        $dbh->exec("KILL {$pid}");
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MySQL - Kesalahan:Tidak Ada Basis Data yang dipilih

  2. Bagaimana cara memaksa penggunaan kembali koneksi di kumpulan jdbc?

  3. Cara Menghentikan/Memulai MySQL menggunakan MySQL Workbench

  4. Permintaan Pembaruan MySQL menggunakan gabungan kiri

  5. Kesalahan koneksi MySQL yang belum pernah saya lihat