| 1 | <?php | 
|---|
| 2 |  | 
|---|
| 3 | set_time_limit(-1); | 
|---|
| 4 | chdir('../apps/edokumenty/'); | 
|---|
| 5 |  | 
|---|
| 6 | $args = array(); | 
|---|
| 7 | if (isset($_SERVER['argv'])) { | 
|---|
| 8 | $args = $_SERVER['argv']; | 
|---|
| 9 | array_shift($args); | 
|---|
| 10 | } | 
|---|
| 11 |  | 
|---|
| 12 | require_once('./../../framework/lib/util/Translator/Translator.inc'); | 
|---|
| 13 |  | 
|---|
| 14 | define('SCRIPT_PATH', '.'); | 
|---|
| 15 | define('ASYNC_SERVICE', false); | 
|---|
| 16 | require_once('./config.inc'); | 
|---|
| 17 | require_once('../../framework/globalVar.inc'); | 
|---|
| 18 | require_once('./localVar.inc'); | 
|---|
| 19 | require_once(FUNC_PATH.'GetUsrAcc.inc'); | 
|---|
| 20 | require_once(LIB_PATH.'system.inc'); | 
|---|
| 21 | require_once(LIB_PATH.'db/PgManager.inc'); | 
|---|
| 22 | require_once(LIB_PATH.'util/Debug.inc'); | 
|---|
| 23 | require_once(LIB_PATH.'db/Bean.inc'); | 
|---|
| 24 | require_once('./classes/eDokumentyApi/EDokApi.inc'); | 
|---|
| 25 | require_once(MOD_PATH.'ADocuments/ADocumentsService.inc'); | 
|---|
| 26 |  | 
|---|
| 27 | if(!defined("STDIN")) { | 
|---|
| 28 | define("STDIN", "fopen('php://stdin','r')"); | 
|---|
| 29 | } | 
|---|
| 30 |  | 
|---|
| 31 | UserRights::disable(); | 
|---|
| 32 |  | 
|---|
| 33 | $db = new PgManager(DB_NAME); | 
|---|
| 34 | echo "\n"; | 
|---|
| 35 |  | 
|---|
| 36 | $ent_id = $db->select('podmioty', 'id_pod', 'symbol=\''.ENTITY.'\'', 'id_pod'); | 
|---|
| 37 |  | 
|---|
| 38 | $decreeArr = array(); | 
|---|
| 39 | $out = $db->select('organization_units', 'orunid', 'ent_id = '.$ent_id.' AND is_del IS NOT TRUE', FALSE, PGSQL_ASSOC); | 
|---|
| 40 | if ((is_array($out)) AND (!empty($out))) { | 
|---|
| 41 | foreach ($out as $oo) { | 
|---|
| 42 | $decreeArr[] = $oo['orunid']; | 
|---|
| 43 | } | 
|---|
| 44 | } | 
|---|
| 45 |  | 
|---|
| 46 | SysContext::$ent_id = $ent_id; | 
|---|
| 47 | $_SESSION['curr_ent_id'] = $ent_id; | 
|---|
| 48 |  | 
|---|
| 49 | SysContext::$usr_info = array( | 
|---|
| 50 | 'usr_id' => 1, | 
|---|
| 51 | 'orunid' => array(-3), // EXTSYS_SERVICE_ID = -3 | 
|---|
| 52 | 'lasnam' => Translator::translate('Wypełniacz'), | 
|---|
| 53 | 'firnam' => 'Usługa', | 
|---|
| 54 | 'usrnam' => 'Usługa Wypełniacz', | 
|---|
| 55 | 'fullnm' => 'Usługa Wypełniacz' | 
|---|
| 56 | ); | 
|---|
| 57 |  | 
|---|
| 58 | // ile dokumentów ma wygenerować | 
|---|
| 59 | $maxDocs = 10; | 
|---|
| 60 |  | 
|---|
| 61 | // po ilu wygenerowanych dokumentach na rozpoczynać transakcje (commit/begin) | 
|---|
| 62 | $tCommit = 500; | 
|---|
| 63 |  | 
|---|
| 64 | // maksymalna ilość słów w opisie dokumentu | 
|---|
| 65 | $maxDocWords = 3; | 
|---|
| 66 |  | 
|---|
| 67 | $edokApi = new EDokApi(); | 
|---|
| 68 |  | 
|---|
| 69 | $dictionary = './../../contrib/slowa-new.txt'; | 
|---|
| 70 |  | 
|---|
| 71 | $maxDicStrLength = prepareDictionary($dictionary); | 
|---|
| 72 | $dictionary = $dictionary.'_com'; | 
|---|
| 73 |  | 
|---|
| 74 | clearstatcache(); | 
|---|
| 75 |  | 
|---|
| 76 | $lineLimit = filesize($dictionary) / $maxDicStrLength; | 
|---|
| 77 |  | 
|---|
| 78 | function prepareDictionary($dictionary) { | 
|---|
| 79 |  | 
|---|
| 80 | $handle = fopen($dictionary, 'r'); | 
|---|
| 81 |  | 
|---|
| 82 | $dictionaryCom = $dictionary.'_com'; | 
|---|
| 83 | $crt = FALSE; | 
|---|
| 84 | if ((!file_exists($dictionaryCom)) OR (filesize($dictionaryCom) < 20)) { | 
|---|
| 85 | file_put_contents($dictionaryCom, NULL); | 
|---|
| 86 | $crt = TRUE; | 
|---|
| 87 | } | 
|---|
| 88 |  | 
|---|
| 89 | $maxStrLen = 0; | 
|---|
| 90 | if ($handle) { | 
|---|
| 91 |  | 
|---|
| 92 | while (($buffer = fgets($handle, 4096)) !== FALSE) { | 
|---|
| 93 | $l = strlen($buffer); | 
|---|
| 94 | if ($maxStrLen < $l) { | 
|---|
| 95 | $maxStrLen = $l; | 
|---|
| 96 | } | 
|---|
| 97 | } | 
|---|
| 98 |  | 
|---|
| 99 | $maxStrLen += 5; | 
|---|
| 100 |  | 
|---|
| 101 | fseek($handle, 0); | 
|---|
| 102 |  | 
|---|
| 103 | if ($crt) { | 
|---|
| 104 | while (($buffer = fgets($handle, 4096)) !== FALSE) { | 
|---|
| 105 | $text = str_pad(trim($buffer), $maxStrLen, '#', STR_PAD_RIGHT); | 
|---|
| 106 | file_put_contents($dictionaryCom, $text, FILE_APPEND); | 
|---|
| 107 | } | 
|---|
| 108 | } | 
|---|
| 109 |  | 
|---|
| 110 | fclose($handle); | 
|---|
| 111 |  | 
|---|
| 112 | } | 
|---|
| 113 |  | 
|---|
| 114 | return $maxStrLen; | 
|---|
| 115 |  | 
|---|
| 116 | } | 
|---|
| 117 |  | 
|---|
| 118 | function getWords($dictionary, $lineLimit, $maxDicStrLength, $limit = 3) { | 
|---|
| 119 |  | 
|---|
| 120 | for ($i = 0; $i < $limit; $i++) { | 
|---|
| 121 | $arr[] = rand(0, ($lineLimit-1)); | 
|---|
| 122 | } | 
|---|
| 123 |  | 
|---|
| 124 | $out = ''; | 
|---|
| 125 |  | 
|---|
| 126 | $handle = fopen($dictionary, 'r'); | 
|---|
| 127 | if ($handle) { | 
|---|
| 128 | foreach ($arr as $ss) { | 
|---|
| 129 | fseek($handle, ($ss * $maxDicStrLength)); | 
|---|
| 130 | $out .= str_replace('#', '', fread($handle, $maxDicStrLength)).' '; | 
|---|
| 131 |  | 
|---|
| 132 | } | 
|---|
| 133 | } | 
|---|
| 134 |  | 
|---|
| 135 | return trim($out); | 
|---|
| 136 |  | 
|---|
| 137 | } | 
|---|
| 138 |  | 
|---|
| 139 | $start = time(); | 
|---|
| 140 |  | 
|---|
| 141 | $db->begin(); | 
|---|
| 142 |  | 
|---|
| 143 | $srv = new ADocumentsService(); | 
|---|
| 144 |  | 
|---|
| 145 | for ($i = 0; $i < $maxDocs; $i++) { | 
|---|
| 146 |  | 
|---|
| 147 | $words = getWords($dictionary, $lineLimit, $maxDicStrLength, $maxDocWords); | 
|---|
| 148 | $data = array( | 
|---|
| 149 | 'dscrpt' => $words, | 
|---|
| 150 | 'dctpid' => 1, | 
|---|
| 151 | 'target' => 2, | 
|---|
| 152 | ); | 
|---|
| 153 |  | 
|---|
| 154 | $to = $decreeArr[rand(0, count($decreeArr)-1)]; | 
|---|
| 155 |  | 
|---|
| 156 | $orders = 'Instrukcje dla dokumentu '.$words; | 
|---|
| 157 |  | 
|---|
| 158 | $doc_id = $edokApi->createDocument($data); | 
|---|
| 159 | if ($doc_id) { | 
|---|
| 160 | $out = $srv->decree($doc_id, $to, array(), array(), FALSE, FALSE, $orders, TRUE, FALSE, FALSE); | 
|---|
| 161 | } | 
|---|
| 162 |  | 
|---|
| 163 | if (($tCommit % ($i+1)) == 0) { | 
|---|
| 164 | $db->commit(); | 
|---|
| 165 | $db->begin(); | 
|---|
| 166 | } | 
|---|
| 167 |  | 
|---|
| 168 | } | 
|---|
| 169 |  | 
|---|
| 170 | $db->commit(); | 
|---|
| 171 |  | 
|---|
| 172 | echo (time() - $start); | 
|---|
| 173 |  | 
|---|
| 174 |  | 
|---|
| 175 | ?> | 
|---|