многопоточность — потоки php с ошибкой оракула: переполнение области сохранения из двух задач

Я включил потоки в php, чтобы я мог выполнять несколько задач одновременно, цель состоит в том, чтобы извлечь данные с сервера Oracle (12C) на мой локальный компьютер.

Почему по темам ?? Потому что в какой-то момент мы собираемся обработать около 500 миллионов записей между несколькими таблицами, поэтому я хочу извлечь данные одновременно, чтобы попытаться минимизировать время обработки.

Это мой php код:

<?php

//*************Thread 1
class table1Class extends Thread{
public $bdconn;
public function __construct($bdconn) {
$this->bdconn = $bdconn;
}

public function run(){
$stTable1 = oci_parse($this->bdconn, 'INSERT INTO TABLE_1
SELECT * FROM TABLE_1@DBLINK');
oci_execute($stTable1); //******* LINE 13
}
}

//***********Thread 2
class table2Class extends Thread{
public $bdconn;
public function __construct($bdconn) {
$this->bdconn = $bdconn;
}

public function run(){
$stTable2 = oci_parse($this->bdconn, 'INSERT INTO TABLE_2
SELECT * FROM TABLE_2@DBLINK');
oci_execute($stTable2); //****** LINE 27
}
}function pad($val) {
return ($val > 9) ? $val : "0".$val;
}$start= microtime(true); //time

require_once '../../lib/bd_con.php';
$bdconn=  conBd(); //open connection

/**********TRUNCATE LOCAL TABLES*/
$trunPref=  oci_parse($bdconn, 'TRUNCATE TABLE TABLE_1');
oci_execute($trunPref);

$trunCruz=  oci_parse($bdconn, 'TRUNCATE TABLE TABLE_2');
oci_execute($trunCruz);
/************END*///***********BEGIN THREADS
$table1 = new table1Class($bdconn);
$table1->start();

$table2 = new table2Class($bdconn);
$table2->start();//*********WAINT FOR THREADS TO END
$table1->join();
$table2->join();oci_close($bdconn); //close connection

//PRINT TIME INFORMATION
$end= microtime(true); //al final del archivo
$tiempo_segundos = number_format($end-$start,4);
echo pad(((Int)($tiempo_segundos/60))).":".pad(((Int)($tiempo_segundos%60)))." minutes";

И это ошибка, которую я получаю при выполнении:

Предупреждение: oci_execute (): ORA-01013: пользователь запросил отмену текущего
операция в C: \ xampp \ htdocs … \ file.php в строке 13

Предупреждение: oci_execute (): ORA-03117: переполнение области сохранения двух задач в
C: \ xampp \ htdocs … \ file.php в строке 27

Небольшое объяснение того, для чего предназначен код: обрезать мои локальные таблицы и выполнить два потока, чтобы снова вставить данные с сервера oracle, используя dblink.

Буду благодарен, если кто-нибудь может дать идею, как это исправить, пожалуйста.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]