PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (1): [1]
Найдено сообщений: 14
yesnoms
Отправлено: 09 Сентября, 2011 - 12:29:14 • Тема: Подключение к Microsoft SQL Server 2000 • Форум: Работа с СУБД
Ответов: 2 Просмотров: 963
Добрый день, ребята. Возникла потребность в написании софта, который будет подключаться к сиквелу 2000. Сейчас не могу найти никаких нормальных библиотек, чтобы работать с этой СУБД.
php_mssql.dll уже не поддерживается с версии 5.3, если память не изменяет, в sqlsrv, которая от мелкософта, поддерживает подключение начиная с 2005.
Подскажите, пожалуйста. Есть ли другие способы работы с этой базой, с помощью пхп? Спасибо
yesnoms
Отправлено: 10 Мая, 2011 - 19:30:17 • Тема: проблема с getElementById в IE • Форум: JavaScript & VBScript
Ответов: 1 Просмотров: 1230
Все привет. Помогите решить проблемку..
Есть страничка на которой выводится список select, рядом есть checkbox со снятой галочкой по умолчанию.
стояло задание сделать так, если выбран третий элемент в выпадающем списке, то устанавливать флажек в чекбокс и делать его недоступным для редактирования, но чтобы значение этого флажка при отправке тоже попадало в $_POST.
Я подключил скрипт на js такого типа
function customTest () {
if (document.EditView.call_result.value == "2") {
document.getElementById('callback').checked = true;
//document.getElementById("callback").disabled = true;
}
else {
document.getElementById('callback').checked = false;
}
}
все отлично, этот скрипт ставит галочку во всех браузерах, кроме IE. я думал попробовать достатать его через имя, как доставал значение call_result, но этот GUI генерит чекбокс с именнем callback, а последом еще и поле типа hidden с таким же именем, потому обратиться через имя не получилось.
ну, еще актуальный вопрос остается с запретом на изменение значения. когда делаю через disabled, то в отправку формы это значение не попадает. readOnly пашет криво. к примеру в Chrome я легко могу все равно снять галочку.
читал вариант, что можно чекбоксу присвоить onclick="return false;" но не знаю как это сделать через javascript, чтобы этому элементу приписалась эта часть тэга.
Всем заранее огромное спасибо за ответы
(Добавление)
переделал вот так. везде работает с блокировкой чекбокса, но в ИЕ даже галочка не ставится...
function customTest () {
if (document.EditView.call_result.value == "2") {
document.getElementById("callback").innerHTML = "<input type=\"checkbox\" id=\"callback\" name=\"callback\" value=\"1\" checked=checked title='' tabindex=\"102\" onclick=\"return false;\"> ";
//document.getElementById("callback").readOnly = true;
}
else {
document.getElementById("callback").innerHTML = "<input type=\"checkbox\" id=\"callback\" name=\"callback\" value=\"0\" title='' tabindex=\"102\" > ";
}
}
yesnoms
Отправлено: 08 Мая, 2011 - 00:23:55 • Тема: Помогите создать отчет • Форум: SQL и Архитектура БД
Ответов: 2 Просмотров: 25
Всем привет
Есть база данных в которой хранится вот такая информация в таком виде
Посещаемая страница | Время | Логин |
Стоит задача сделать отчет такого типа
Посещаемая страница | Последнее время визита | Логин того, кто последний раз посещал.
Вроде бы все просто, но не хочу прибегать к созданию процедуры с курсором, потому что вообще работаю с MS SQL базами, а MySQL знаю немного.
Эти все данные обрабатываются с помощью PHP сценария, который записывает их в виде csv файла, ничего сложного
В общем, как можно одним запросом достать такого вида отчетность?
Пока у меня только идея, это написать процедуру такого типа :
1 шаг. Выбирает через DISTINCT все странички за определенный visit_time и записывает во временную таблицу.
2 шаг. Делается выборка курсором, которая по одному берет имя посещаемой странички из временной таблицы и подставляет через переменную в запрос, который вычисляет самое большое время по этой страничке за определенный период времени.
3 шаг. записывает результат в еще одну временную таблицу и возвращает его же как окончательный результат.
дальше срабатывает mysql_fetch_assoc.
Помогите, а?)
yesnoms
Отправлено: 12 Февраля, 2011 - 19:57:42 • Тема: Проблема с созданием wav файла через php • Форум: Программирование на PHP
Ответов: 20 Просмотров: 1225
взял домой себе один из двоичных кодов wav файлов, чтобы пошаманить.
вот код
wav создает, размер в 29кб, что эквивалентно размеру файла hex.txt, т.е. файл пишет полностью, но не воспроизводит.
yesnoms
Отправлено: 11 Февраля, 2011 - 23:27:12 • Тема: Проблема с созданием wav файла через php • Форум: Программирование на PHP
Ответов: 20 Просмотров: 1225
Tmin10 пишет: А что за класс работы с БД, он точно ничего не обрезает?
Узкое место именно в сопряжении БД и PHP
в этом классе только mssql_connect() + mssql_select_db()
что может в php.ini влиять на такие чудеса?
yesnoms
Отправлено: 11 Февраля, 2011 - 20:59:02 • Тема: Проблема с созданием wav файла через php • Форум: Программирование на PHP
Ответов: 20 Просмотров: 1225
Мелкий пишет: Не, эта строка - примерно 15кб. Без малого 30тыс символов, каждый кодирует 4 бита.
При этом, это проблема не php, т.к. на php я сам обрабатывал строки, представляющие собой 16-ричное кодирование 3-4мб файлов.
ну и проблема точно не в БД, т.к. система очень дорогая + ко всему в программе от производителя все работает отлично.
а работает она по схожему принципу.
во время разговора поток передается в один процесс, который кодирует этот звук в двоичный код и записывает в БД, а когда слушаем звонок, то он таким же образом достается из БД и заливается в файл. просто где-то урезается сам image.
При сохранении моим скриптом получаю 63кб, при сохранении через программу разработчика на выходе 530кб
yesnoms
Отправлено: 11 Февраля, 2011 - 20:30:01 • Тема: Проблема с созданием wav файла через php • Форум: Программирование на PHP
Ответов: 20 Просмотров: 1225
ох как я тупонул.
8 часов без передышки над одним скриптом.
в общем сделал так, чтобы выводил. выводит wav файл, заполняет, но снова же максимум 39 секунд.
слушаю этот же звонок через программу от производителя системы, длительность 4 минуты, размер звонка 500кб.
вообще может массив хранить такого размера данные?
потому что строка выглядит приблизительно так
Спойлер (Отобразить ) 0x524946464A39000057415645666D74201400000031000100401F00005906000041000000020040016461746121390000581753CE840280244992248902802449922489028024499224D95B6B3B399124096DEE685136983E722359925824C6BDF6BA90731CDEDF13E6FB782E3651F3BD55D315812629CF226B698B601797C2A259A9618F4D0263D7BE1575F5426C4B55DB1E656F748EF5104A8B3BF6FB5931F489E43872591DDADD6371B9D81AC88EDBEE5D931609A73934622177CBA1D64AA2ED4F555D7D95A2269FB25DDBABC1E15E5A6EF26CD0B492D228488F7441B2B5186CAB2A3FBF6025A8FA2CD565751B6676DD325E0FF7906317AEA10655B666C3B581B02C7AEB4CB381AB5D3245ADB5611D0F8AAC3559B4B072441D186E2F47495B1B2ACF1447EE351B569B83FABD5C13E87D6C7A3213E7066BD94BC16ACFF121C30DE26C954F25ABB561FBE29555ABAEC15BCD574C57794DE8995A173E97712412DD207C82E3D696741DD62CAFDB81E61CAC7FDCA8CA18E7425E59AC81A74059EC6ACE61594357B7047362E54E57D5C68BC1F3C9A622996550E051BB1CDE900AE95DEC1CC8902659424D1FF4D39E348AB91ADC5E29D3F59E07411A85B741522875B7D48A41725DD78387F781727DACD24CF4A10297C866347A32DC8DC52C306D27BB884E2D0CDA1D85995D2374925C67D6DC1AA87639CB5A5ED8401A392E21DBD3C39AA3AD61A78F95233F4CA192EEF137DB2D4284B9CE9A0872311872B72636B29C38DCDB1C447269D1BBC61C146B7CBFAA7227349EEE98495F37C319A9AD81EEFA48850CAF819B1691F3574C4222577E9E662F82EBDAAB1A61D5543552C3AB481DA5A68D44407C7392B6DE5E82486A654F92EF86C0B62F476956ED222777B36623698CC3B6BD666CC189511A2C89DD8EB12419F76733E85A034AD10FB66E747BB86355B26CCA868C72D444D64983E0D2E4C8BA6C81C477E14443532C29DF523489D4368DE0483447E3B4E2ED30B487DB0CFA0C27342546DC0E559EB1EBEA4DC1A3146ED354903E7DAA6429E86E5D8934E6A14991DC849EFD0CC76D1ABAA0E2A40DE72E26156C8B0F25C5AAB59C924DC4525F4E2267A7E47703ADB4AB7DAB9575BB36024DF494A5D92AB255C85490582F0492CDC9283941AE722DA3EA57B920231336656D358D689D6B87133196D4765324B24DCED95BB363B58E95ECF4948C3A516B55C292DC502FAC58BA42A448AC2A43C2826E4AC6D54634123555A28B5A5BCB74D5C22385578EB06AA29EA8F0DB72CD217C1726FDECEE62A15B4DF0C1A0937171AD291E492CBA512F258C6DE10CAE5E33E22E1C451A772766DC4453E2CD89D30E0B6EA2298AF471A4F4429249A9C84D6B635A457BE24EAB21F227A644DD9859A93550132E72D01E0A363334AE9B365C361DA281DDB232282BC86DBC226D0DB91F93B28D61FD16505ABF2B82C34895E3723581D6BB1E2DA5B3E12B63AE22697936B12DD71834ADD2496EF7143435C2A568EC16AC291AA955C9142AAE9BC53154E8CA11C396C1A83771DBC80A81DC9628DE2605410D4A8A5AFCCB606CF4719A5F758EDC28E10C1096C8E8C2F70A40A64A2B8DF212969D5C37D13B13E669F3C84917D70CD2D40A61D34AB14D26CD605A982F53862F604D8F7CBC7CAF201CD9AA92ED65B21869EC0AA699CE9A352A0B0A5409138FB110266AB3C77DE10A76D69BF847215751DA76AC80DE9C909371EF619C42819A662361553866F5CAADC07C65F2F6D77D566575EA1078961F456ADA0A2A896BD4886A0AB6851DA95575146ABBEE3A7E9E380FD3B22E61A6C64D2485CBA0A45282E2C62C4192C6745410B460E2C08AA4A77591E468D60A246E12502EF60AD6356DB271C30EBE51724613E212648B1ECBB4D969DFDE64CBA0D40C4DE2785543E2B46D69D0BAA49B088E29778B21DBC60961649134A10C4F184265C9306E7118A053D8AAACC20CC85E7318BA5E124C592447965617150E53A7402DE3FAA0500F61EABA650C766C41A4524EADF68380ADC4B1F49885F41812E30CD6692D552FE51046A91B3369B70CD675E256F6E30EB8516FD732DBE808DDF0EC609AD8CE59D20D21A246319249AC20DC1256FDF8AAC0DC98D98BED9D6F540ADE12B46964156EC2124A915A326AAD0CAA62C7D8BABF143C5AD24E8D541717A622ABC00D6BB1E4D6AC005B23490C05EE201A074B680A4D626C396D5AFF88F97506AC459C4C62FD6C3810806694262D5B12324CE4B665670C560D94A6895616D9D574276046E31135580E6046038C49D2EDA053C98D9C37CC40A3C9B5159769F1E44CB60C46929CC796D308D68D19A46CAA0ACA5154CFACB60ACA956B998A4C9821DFD0CD6092B78ADD42CF40DAA670CAF21262DBD8135994EAA4D7B46DA3A9945CF20DC02A1E6A5354BEC520BE0D12DB6EC51C9444E52D35E8122088F3D5660C4723E7A00C01A1D97353C34E62E4E8815D02B78115798866F48CA157BF6DD542692E6D56CF223EB7955869A8271A5ED9BA80A82EAAAED44850501B52C9EE9EB35BE7CE15378D2195AFB312978C21A117BB0055EB42CBBB6E5C340C42A55672EF3671352A12621238EC1F39CE6F1E460EDBC86DE114228DD53451E0104A6E8B48824CB9611251AD60546D519BD98B201BD970AC02D3601BA68DAAEACE400937686DF880393252EC0C568B6A07CEE30C4852ED460ABE0C3892DCD8D5DD0C38B96E4BD69DF8162265CB806D95DE14E94A419858019A020B21D2A6849CB2BCA41C3A6A5BCA7D55CC2CB2240AA9C2BA6DCD121862FC24EA5324B4DA3E776FA95CC8915A736ED628D975A12A85244992F78BBD6ADC583F1BD1536A5B8F71933474483A36569274A1F19C6F487D74701C37714B5E2E6E92B4487442664D8B0464F5469E959B84F1594AD339C5BCAC62498E24AF3C2B1B396DE4A5D469DB96697CAAF48C23C56D1797A1766137CB834A962CFB6AF1852C6EE4CFACCB8D264DD24171CB5D525323BE35D73A99F6B074881C7D70E5B854685A0FC9DA04FF671C8671E2A4BC65C33791A248B193310BCA45082EDCF9756F3D186B24B8B64A49CC4D5364F2EF7A387212397F514A555FF02E259C96761FF96E8364BA551713E76302D7929D664F42434B12B11D82B26031EC2E10256C4DB2302160D2AC332FB520AC145EC5C5541CE68981BC57502717A264C7005929975BA686A01F9949621887202C676C09A50CA0EB145CAD046935A551DB0AA871E63496DB0E488E9DE82DD806C0CD6914A85D0D1A6DDBBA4D99F6D0D5746F81DC58D22D89EA801E497103EB5581E4E0505396EAE01397F64A427E8C6555D01AC68ADD44F2D3113AFED6420DC01CE2521B0560312F9655D4F0D1A7D79C56630D63A3478DE61ECDE234579923BBCA81210759C36A466258488DA3746133291A5F1D903AE2668EC31E385ED6282ECE1ABC5E9262D2BF1A2445DB5E4B24B7141E07EC421CB7CF1AEB4B8186DD7769054C4262316E6381AB8153343304E974952531480CB67E94C646710ADA159BA96C6A0C348DA284B134099892D2B67153D7121AF58B40A5A88E1947ABA0CBC86D52B9AD2023D755E4D67661D3BAECEC94A20C654DB453B66D24270E3753CE89ECC695B624A814924A05EC32B86DD008B168A79816E54A01E127AD1208AD612D377E9D2515A13D565730575642E6B0256A319D0FF22DAC2C32B27F20B1AD6D4E51A32D52305DDA63D348A33043128A8623B1931A99DEF412E4A838DEDAD8B564BD38AA1FE75283EAD1703221FF425B06694BF3AC92F5492D2918666A6570F02A5E50A18F31EE3658A2512D8DEB28229620442E0BAAD95E546D223BA989DE8A4EE1D2577533952E816B2F556DD1EB405AAE49232F7914796EE510A26E3EF9D1F7083A7AEEF7B2EB0C28DA514AA6CE0EB6815BC5AA5C37CDAA16AC8063EBBE746B14A1A72B4F74878AA12B444AEBF6AB60AE978E51259674E489DE0896AD2BE99250113AAE7345DDAE12584FDCDE562E13BCD092DDAE6137096BD6CAC1EEC8AF64EB54C1E44CABEB388F619B5AA1D4B8B281ECC662DCC269792D6BDC1A2A6E63C171C5144CB774C34FE6143A4B95B152B118340EDB04259B86D55AF88B00A9D0D3FA4CCBA0CEE878D72654A265CF9624794D41CBC8811CA769D1A849DA10266E5BC715EC1438462CC971CC0E48753AB516DD14242D63D0521A084FD774CC40D5D680AED6AB801FE991E56C8CE063C78675778FC0EA2621A20875526D11BA0CA49A344B33F816EA55ADC78DC80A3AA62DD756DA08A8AE5D4A8E8D0791D234AFA05BB9CD2A55B5803315D3DB08CC20C94A29A3486D4123336DE10A7D91314DDB0A4491EAB499C70E569A1459A6F600F475655C46B5143A858CB4494E489BCEB2CA60924A917247AC6032D7525DAB8BC07349F921DB8AA05549836BB97CB4A54CDE0E5A6FB3C9B1DF0EC6ADDCD6A6F204A26DAB0A82F208C465AA24714D58999A240F6052B7270B3345A05C4536F7D6AC209B4668A6D4AA601BB19992E46C932549D30AB489E43832F50AD8755D39D5D208BA922537CF5901DC1FDB5CD74C1659D6D28B402DB9523D592E4017E5859CA6EBA053C66E2457CC40E23A4AE4227DF1DC4C710FB866D3566AAB08464D2B373BEB0E58B1944832CD0AB631A3C46CD0160BD2A4EEA0A396739DB7CB20ECCBEDB445ABA06437966374E480643456D2CA7477290DE80204AC9EA08FC40CD655A4D78D510D5866DC246EB10CB451DB262ACC16559A002D406A35A9F1780E605B2C8F238B2780DAB5E9DB080B40A4A2B244364D4EA548510BB88D74EB35A90AB452F5D876CE0EAA7263AA99EB08988CC3B62D13191985427C821BAB758415D3A1A40C4A64E48C81844C6DA3E825619B3884AD54695115556A0CB869ACB9D5CC0AC0B6EC5892BA0C48963517AEEA0A2871DA2A46CEF694D9808D4099C4511275AB8065358B5B494F209EDA532A8CCD6023BB89F5E480356E0DEF02E032836B79E500F4B565E766EA023AB2E3440BF40856321983514B671B92A28240D9164E136B6C2029B5DC1D35AEA0E3EA5524592E40A425CA13058D33214DE90EC6251AC9ADDB0BD8842DD7763B1B4673EC74966A0BC66946D1480C39118E522361ABC265D30A8C4021DB8CF110B3801FC9856417D320854689BBE884B1E428DC0C521216B991F410B695AEBA53E31258B172CFACBD10A8A4A75632930857D2248E2063B594B685E6201CA97287AFCE6066A6ACD6D8EAA001C74110138D94A14DD70C12669B98ADC70C325E59C7AED10CC6968E3BAEC20CBAFEE5188D5038CF15174C212959921B83CA4074C9D68DCB4A4124BB6B6C27AF007A37B999E27871E54DB30A288D12076ACF0CE68EDBD650EC0E2AB1B64226771DCA7314394D50E8D69A464C419AA62B9348E3208AD62C7D95CD60E44485AD77CB60F328D0F4368909312AD80E764AA5397A330DBCC9E2C699F80EBCBE56E754B10CD85322B5221408D39A92CC8045C4129E442BA153646A8AB6ACC01B5D77F4544F41AA4A6E321489B1AD2DF60CE671A2FA44CB14A451555842AC126AD29EF58AB6124ECFF53A56CE581FD7E2AC40A4F5ABB0D00D4167376F23D71661E4BA97ED658F203C8DBAEA7A81F0E064C31296659A5829F514B880AC48D1F608A68D57BB7BBC0AD871E5429ED37619DB24B3605638A827A2AE600547B3B33DAEA0BDDC8E6FDC2A81663B91DE3079356949D20A9E8565378FB70AE48BEA7813E20CECB525CB95D60C3E8A6D558E9655939E76AF011B494DDB448B80D658059A074D41A50696D476CFC04A6D843CD28453254DDC1238672D27CAD00A4C928D6BB1E80A5CA7BFC5F5D61246921E6B65D348DBDE14EEE04BC8D59A44AB209C2729B3D4AC20CE225356E4ED409CB784A4F27C322D312B15342DDCB86DB50CB2AE8D284AC20EAA4634A951D1144891A5B0720E28191F05CBE06426B19C3AADA033BB8E2A9D2E41145D922E0FEB40AA79EDF3B69094B151DC123675E5C80ED9163412242744581534A2E6224ABE12C6D82B2591CA78DD12C3EE20B6BA09FDA42E612387A5D46ACCA09A945EB31DACA0D254AAE7C53DF4E132EB19D658D4CB4DEA18B0712CB531C512DA95B4507AE81ED84BE54876501963DF62AC81DFC648147DB641AC223D645DB42112F9F8EE3A3C636BE04E9C36A108BB69415586969C2652C1226A72595AB8E21EA82834CA31E4102A68F4C46AD2B826E650C600DA3A564A348EA046C94AD15556C1DBA2F47819944193C8C2AC24A5AB2E2AE12D56126EB5ADC22F88B596B8CDC329C0B122C7A9C31F248E9AC3CB51CAA85E461622D2A463573534629C9E799C56B662BAE4711A750E82A2CB415BD798D4A566E926CE2A13C7E9471140E10B499EC710206662572FE120328D955E15D4B9D2E5D88A418D29974356CC61A56C129B8CCE61AA3B68F25A94401D15EC9AD7844A3A6EE80EBC40A54AEEE80A42F1DAB856C30CB26EE4782DE60E386E6B37AC98889816B7AE60EC364A91AAD6801E2C2963EBAB8031376D5AD94D61DCB6E9210DAE0F9E486D0920EE1D23A9D40CB27116D829D30CB4A98CE70DB60A44721B6589E0F91C8E74AC8019C5AD1B37CF20DC56661C35AB40DBB651B468F48021A98D222796901928C608A66E249769E70436EE62762174043459DB44F6EC06B276DAA451A2299589D44D609ABBE99A81224097C669D3B62C601C3A51DDD00E6015A5715B34864D9149B400B86EDCB88DEF0046B1D3C62E6602B84A24B59150003676DB364DD5140B96724560EBB66DDB160580E44892248902802449922449078023499224197874614D28004892244992510048922449922800489224499228004892244992834717C6A4028024499224890280244992248902802449922489028024499224097EAF9C48AA07C86D9BA64D2B06C8911DB56DC102B6B11C47AAF5044672DC36CE610A9FD2842B8063D68DE9260B002A697A4942FC6062585226D9AB407D366DDD34AE5125724B174A4D5CB721DC16DC71E5A475CB0E30662C4779F80AC475E00ACDE34C17DEC68E20A62692EB744C411F496D9DD2EA808BC871A158CBA1DB4876A019C2AA61962F12167A1A498DB612CA5126356EE012B8361BD7743B0BBCAD17C3B01FCDD826858B40A45C461CF5AE8096EA899AF4EDA019D5A964D5CD40D6A38D9504B6326176B30A36AA63B7A8DE0C48CD1A3969CE0A46E8ACB672A802C896111D2CDB0A5923F58E40F3A89124658F80A5C7A993F8AC201C5B6E5B250D801B67568B58AEF261717302C2912443664C0FC8919BD835F60036886B9792CE043CCD551545DF6A9315610EA0DCB791B46404A0BC6C46DA664D40EC3892E2B7AD80E4482ADB28825559306E04549223C991BA02B8DA9D34716504B671E4C671CF00C8CD9B386AE217D3DDF2266024598D1B274580DCDA6D0A074760EB466E1C974C80AB378EDA068234610DF500C48D63B991D40648961BB5893604C4AD1CBB71CA0038721C4971E1D754D6342C80D4586E1A472B80EC6A4DDAE60540E3C6911B996C80EBB6711CF781F398307200B8719DC88DD300B692E6A4894800B691242B92CD04C655E3B87161280D09050740E4486E1C0965606CAB89DB06258024496EE4C80C801DAB6DD3187AD1D0507202C69123C58DD00246AED4B8513900368EE338924A065872DBC66D9D478DD184268062377223152DA06BC7891BA74260E3387224F94C605CB76DDB187EF2602CA90028AEA4486ED0024A9623B5712804C671DC4892F20448729B368E61188BC9A42260E3BA71DC484D60DC4A6EDBF80460E3C85224C94C805CB96D9B088274614D3E00BA9124498E280046922449922800489224499228004892244992204817D684028024499224A902802449922489028024499224890280244992249985B465132800489224499228004892244992C495B66D5BC17128ACA489DFB66D562957BB8014691C7B6E23D9366964CF6DE4B83485EB658DD3C4D467BDBA75A3488D766D0F716D7A751DB98D4B478E75D022A971590C8EDAA48D4B3342919C28F29278593211F701AB4B3AAFC79421ADD0B33D2D2F828D64913DEDAC619227EEBDED8D119D29F32ED8522C794FF124782AE277BBF3221033233319F22C5412B08A4FDB3819EA96CA41952AEFA2362E429180760C170F620221B1CBE82C227B9B96EB48BE0FA10EBB28C89274F991603714AFE0A839B334826F18344E312E504EDA16B2EDBB9A11652D837339F6A6690F62316B7ED594CA615BC02E5017E7237CB74E203B85DA0D3FC1A3FC2BDA567FC27CB66DDC688C4B72C86D5B8F91EB68CA51A34172939821A9B7D664127BB8DC743484A32FB29378FC211F346D216F7C84DBC6916B317DDAD55EE825409AF5BACEC56BB891240972444734AD46494D433188D0211B718EB8DD7D43F6835737895D2F2C2226238DBE2CCE828A54D31729A601D26CBBDBD88C566A4E6B14D4BA749DAA660A4C5134C9A66B0E1612A0B64D6E08360F4CAA8D14299BDA10EC805EA5B234C5AEC010B9052DB7CA60F338A9621B3341E6667264BD6D32D945381B4E4E6A3989A81EC849A482122D27146EA80852AA1A4A91DB4AF056871D96D04521FCF8206465AB80AC37CEAA1AE6E05B5BAAD4D41561ABB9BE63158D957131B516EAA6559F2EAF1A085291366AB80C508D5D3479D108EA491FD75ED337511A55AFA09BE7B90A596F619BA86E8A7A8FA043964613750C219CB88DE53E79B5A5915A1646572347DEEA0E649A0917522C0A5E8EA4C6C8E60A469AFA4C960C58D9D2A69220EFF4AA1CE76B41E5B632980C2B411A4970DC1D2C61F5067376BB90981917BE144476AE1BBAE20A90BA2C3285C011448288A6F7AC32262AF3BE9890EA503370134422F7A593A86BA4C7A46DE5C153E31945B729D7B3829C5FB89A05A1B2B9293D37EE91D4A6FE5C394435937827BE2DA44934B429DD25A21AE2108516D95C2FE49B621CD971DBE19B621B28F629E9DBA212679667DBFD86E4C892248F85AE352FBF59C07224FDD9BE592E56F3596ABE67A43D1CB549BE49C66194B65898E7A0B7E4BB8529369125E7F364D30C7292D475648596409ADDDD649AA2B1BA68810FF64BBD49F499343BBADB69585D56CB963D53B26E62F9945B2B146D7D5A29D3082173B67584B23A71144106E4DAA6712427C60148942810C62A02D1C695DD54856C2D4BE14EC8B61B37DF35490E9A19DB8A411CA2B8A40E316F16A4781B40325207DFA124C7A1E3304DDE166E412646529D43EC40F1F8180955EB6225156DE4DB9070F6093633A8705CBF92B724C4F9B2B8B13E358E910C5B83B924B4687EA42D9578705F825322F6B2311C1FB7419244D103551521E4AC65901457819C968D0FC38CD3F2485419A6A9BC57B2D41A7A8BABCA9BF010CA8A742B16F1127453AA32BE0A79A712974B219356FA91E44E215B998CE948D3815AA555C608B520219BD4198DA499AD7551120AB16A4BCA690CA48BD3CAAE690C466ABDB690E70E444A0D577688CA9B22E5CC203B57D2A0258B60B6B6A91E358B609C680DDB4633611C2CB1638AA83C6E71320FB6F32029DAB20A2636EA0B7D6509D276A92456BF0E94C96E28E7CB29A35744AEA1E526F2D62A3301BC0B14EC1BD32122BC326316336126E6E075EC90F37162311B48BD4FC798B11BAE89913E6E322FD8725BD81665313E8264C52E8D6ADD9A4673A3E5AA8D7C8AF68252F975DBE234825FD570ACB576632877784427ADAE712A362B58871BC63ED446A8707DB8453923B6169630EDB91FB42D0F39A250CB986AA6B362225B7CEB88D5A284B7915D77AFE29CC8D253E933210CF94D1BC2B02F29725C1F6A6B2325F2DC18C4655ED8CFDE18B22EA3EB68E01AB4ED739489CCDA985A173661EC1871638016C35A548AEC35D4211A35DAE0426E6211C7471AD7B011B16E4415C6E9E15662661BB8D3244BA5452DCEB2D338D2E72FD44ADCB842D02A91F2507C829B44F6E08CFE82DC46A363693463DAF8B4D362F482E4A36A5405A953ED26483B58A3DB36926B257E816CC1726C2B4CAD5A34F5491F200DD8F0E68E4951AFA0D482DAD4F2CDFCCE011ADCDC99B32C824337FB95068FA1DB22F38B949C7A312EF024B6B4FD4478EF1A50AED54A2ECA12D6F219D381F00C7437A10884C999DF1A0337C1A319CD081777C1B4AE522BCB34A1C62D879AB7D4E1A1C661DC9C98B96D31F21C226E03D5D64B11828A4BE5CECC16160EA25952F11EB2615AD96608AA9D0E154F418DB6B64ECA8C41D6C8B3D61A8FA122EBF91A594F213AD97621878C7C6D51711762A23451B1F212D4E8A4C4ADE51632FBAA962DF61AC4711C28559ED468D6E4AC21A5585300024BA38DCD0DDD98AAC1FAC987DAB62DA2652F92128B63CA6151321B7493E497325521CA93D7355BC92A56EDA5DE44B32434586048A6581597DA312E02094256DC02C641936CF82D536F821B39DBABC1B463E3349EEA187155AA11A9229AAC34FD6C782F0495AD39B14F353671AA0B3A2825C04CE2B3B15197A5DA003502A8D49D286797E191B4FD398CF262B95A93EB68EB4269F67B9CF488D4652E5B129814733C51D714A46DFADA71D42CA88522FFA8A9149848CC6A1496E85A9E232DC1D848A551D8CD6112428E736366A1EF487E62DD6CA134C9B2635185507131B911FE726A0CD7490BDE829AE40FD20E56BFEEF20AF618D632DB8A544F881BCED44E21E30251DAD0AE605918A921C7E680B13971324DE6A0A2B9B1221371B325313D0B5A762B996DB014D8CDE2CA72BE1078922439566C0F3A329C4748D4D7AA0EB38EA01B196D53632C81D4B74EA44A0BE1E2C64D5FE75D824AC7DF00139D749A12E26D36F206B98DC741B2CDC739934E2BC8D4A7B971F74EA6F9F2B64D136AD7A5117543D92E6A129FBA43135994E39692020D7D9293281503CCD8C69A18AD92D5122835D08CA54A6DD12C44917D2A66D23644913E3A4A291516503EC12A8C7A951D33ED42D1E86B9E36D5815B571E5E854D82D33ABFE0244D81DA2A8EFF94A011B575D914C42CAC7D71AC1E3852633D0ED20CDA3558CFB22913C00DA6C656C958D51A9512C18D476E7AA3AA6120B5A533072B8141A785AC27ADA04A03A6A69B7C976151CF1C3E951C49B2A814B86E2A27BAD808E475A056952B0FC851A6C83D4C384F5A332D81E346B5E1CACCA0A5AAABEDA634613E158ED9624B01AC844DCB3699B2D850B71AD22C18258DAB0A40572B07954B3B5859EDF28E30245892DDEA9ECF2C11E6D05E64D4D8BAFFD42A65DC48D607E56C65D4C49D28E5AC64D2A4D5E036C90C722673452829A2A185CC3D968D7B5776CC35C68D7CC86EF223A0885D318317ACE66AC454461B1F8EE318BF66632F96A5B9BC67F6C79623A9DC657DC5516A75AD0BAE8A6F87BE6D91B2ADC96FD42654341A4981CE8EDC367E49533645D1766656085F72C8AE6893B4F15A7774852CC747E6B8F6A42677CEEB86342364FB2914B09019AA89EB46B673132369EB26323854A855EC1A92A3053BDFC820E4AD91D63E098B5362850C821321897496B4205428C696D92E82D4569EE4EAF6C0E3F77E2D9DB0F828766E1D346ED7384A701BB6CDD8C84CF011B65518956DC924BA8B1B2769898A935AB714C17AAA59E116B78107474E5ACBDC412349722D1F9FC0925D9125AB94FBE9944A45C6919B487D721B3A15994857CB34264ADB5AA37221162292C6628C78A7463D97414522A68E34D76241B4EDDBDA5C62DCD6D1EDEB4C6353C97EE4D880B532C97529B695DCB78A7731148EE3B38A4F23D089AD3BB34F23B872ED57920B78F1A176B761234B139E780F229B381BE3889701ECC876EA98F240565F3B2DAE8CF7A23152113A6A65B30ED21694852B25525313268E1C3F91AA08AC69E5780A0E27EF55A1B2609C305C3BD54A811B26963EA56A81B428AE3D1B2D81733B6AE2BF7CF62612550D5A31CDD2B95413B46D5D44B758119C997DC69E2B1D9ECD9CC24E0B89E7DEB0B2A2CF384AD3A6524207B571A3B4528237E832E3983262BCC39222D5A0753626AA1D46164E5686AA1930D2F94655A92BC88A0FBBB2AA1B3897832B91104A61DFA07A42E3F8885A94D2439BD863A436DD21AA743A1DAB7A612B47BF2E22A9F5B529AA49B84DDC8866A943B07622F9A8AA31DC96E434F85331EC2A5AECA3131B25DF325D636BA2A514913A8259A86163333DA4A55772E4399DA66CC9B62D3FB111362E296DC8919BA4F55347588DDA92F55343306ADB26B5D33530AD2C37D6531BDDA7321DE362B66813973A020C7D8A4A941A62EE60B6EC2FDDE2FB648AA9FFB098AD42283B7C6824B97150594A70DCB89550279EB2DDC4F6F860FC71E43692CCC91F6AF094E2E7242EE1780FC2848709E40A2D4192B742841B4DA23BC84D1B8761D19C55AA103E9F591071CD106ACFB53027B01E44565C2BE35423D089245D6EA63797D1A62BE101273B16B70EA2201B0CEAA62BA3DBB6EDD7DA72A3A4C99D627F7E53D94CD31EA68C0D7000EB32366D0C4609BA1AD0C6632681B42AEE665BAAE264489785546CA230276ED3A80B42C8368423868B820D0DF113794CA18D23B35A1A8E999948DC224EA4D7506DEC2482ADB12ABAD21AF8396FF652B3224AF99649BAA17857C5B4ED01ED20712E54CC824AE271C5948B01E1684523416D620CBE6C24558E55E14CF01A0AAE99CC4DE13256E625A9A9A82EBECEEAB6D6C52E269512F88AE4390F96544E8255288A4224CD61E1849823598CA1CF22536C9FCA225B9755FDE4A87AA106684DD849EB7F06E94D34923F384EC654B2ADC7484ECD55A6494639B2526B157390D2651B798DEC16FD4283ED41E49092649BDA875C25556512D9C31D37BD94ED462A57B8A9BCB652544D2A25D42571AA573A92DB2E96AB3356B42CBB9B533C1D33B23A8365C992D4717D6514A9AD9BE0D2E5A3C6291CCF12E3E1CAB1A438C5D1354358357E911D478AD82F824F1219292C33A2F119A791D97AA6ADD7466ED31BD55F945DC2B7DBCB359BDD619AC66AE893D5425CA2B59794D5A2D438917D2B9D36A94E592772B22BB4B859255069A40849AC1A7C521AB5996512B6FEB76BD7525995DA5245613759937327C560E604071C472701E3486E9406CE8014A7B2664591B2E131EB0854A916A5B4B20C3852A1A24EBB027C936F2BEBF40AEA90AC5E9B9336550DD3A2805BC968A304EEA011D6694DA68D60DB3C395C8A4E819A3BB22BBD6D92E531BB1B548E5B094FB1189CAA77264BD418FA961344CEC71CBCB2DD369E89786156F5AEC16DD769DD2EACA04BB9483147CB8023980C4B4B4E81CA382DD13B7136652EAE1AFC759B35722D2FEA4FD9464AB1C5467204A9712E4852F62FC3B5CA295B5EC7CAA35CEDB3749B4D82F55A1AE5CBCA81DB26F6598A2D42CC12492C04A5719D16AC28224D5210762D5B14729246F25663C0711BA9912D317CF81B49CA142A1B35C15285BC48B22497BD8364CFB1A4C8524413F98C1C97BD83E246E2DB38A14FA516D8234E5526B52E583BC81123578CAC2522088356292B29426CA214D2CC299722556C63DE9248AC7F4D21F4E5A95699ADC135DB9D4D0746A27EB971E596987A6171D91AD8F5A4D246C016268EAF2650D71242280C4D4DAF08602806D55ED048D5D1A2CCC01AC391738D4EE113654DE6AB2E81E4CAE59D8AEB80692BBDAB1B7A31196D571BD672F32597B11C74E44546A8B8854894D2C8693036D6753777AFD127151ED505C3E5ED67645507412D3767905326C1C1DCD240FA52226059D789497972693A2E51C88D246BA82B433A50D3D872B640C62D0A9F9276024673A3F08E413717D6D4250029C5D2358342601C478E2407666023378E2387028024499224197473614D36004892244992280048922449922900489224499228004892244992814717D6940280244992248902802449922489028024498E2489028024499224396452210D28004892244992280048922449922800489224499228004892244992C23617D684028024499224890280244992249902802449922489028024499224296C73614D28004892244992280048922449922900489224499228004892244992C23617D684028024499224890280244992249902802449922489028024499224296C73614D28004892244992280048922449922800489224499228004892244992014817D684028024499224890280244992248902802449922489028024499224298074614D280048922449922800489224498E2800489224499228004892244992204817D684028024499224890280244992248902802449922489028024499224098274614D28004892244992280048922449922800C89124499228004892244992204817D684028024499224890280244992248902802449922489028024499224098274614D280048922449922800489224499228004892244992280048922449925309632B81028024499224F99C45E4BF4D8A1413A9BF448D9B9852673DDA6DA466A5CE354B547B263E2437722B6D36FAD1B449D57B26D1D72852AB5F3812913992991A11EF72B5655ACA189A84BD244B40AA50B29AC3D4B696BDB79AA45BF98EADAEB5EFEC4A568F48B6E4C83EAB7CE86ED3A4F2576340779A38B1AB51FC6513A991D81ACFF2A21AE3F844563259B5437C38861A617D42130ED68AB2DAC3ED619F5B4DAD0F2D4B555358B297B991553D4892CB88B42B31328DE3C1765547464AECF1390D5B132353F543E6C6DE9C58F5A2A2467225546D83CB368D1757F562E4466E3DDF941AF174552FC876E2D6132A25C429DA26EDAA17AAA96446F12A118A495C38D58C69D58A4595C11FC771234B55410E3935594135615D246A68421D212EC9B5EAA5A078ED542A0FFCAF9B4530541BBE55DB1A8AAA118CBA5C1993D41398D24D476BCA8AD921A35282D4FA701B37DD210D976BCBA65242E4D66724A93A2165763397B5ACBB1D162A2D368EEBC38D5321C60C941F4AA9133ACE612DB3A91FAACAABBCED0CB95DDEA112431CB9D14797DA6181B794159A3A42234536DD9532821BB38D3DB58CD82932D21CC8091CD9AFD418C27120376E540A56516018D670125A7212B1CE4C58D512738FA0AEC7514A7CCD6064B5642258AD80D3AC696B8875C011525E524F81181E55E30A18B3E8A758BB0C262C5B3785D80E4CB7433849E914BA71A2286F600A515AA19D82B3BBADC6F832859DA96D988002C3D3766D52E4A241DB120BF3387551721EDA8CC86D637D53379526ADBEC652AB9A346E3D544AA88E46A98F3A4E5338A176F1D487D3FA6D2A77D747D2FC4D2A8772640AFB902A033586D3D88B1D0B8D55F116283D448E7D556ED12A466EFEAA4D531CC0452BDD6E5B1AA428B2EE9E4988DBD59282C08A136AAE97C5401AA5A25B7BCD80D0B6B1D48AAFC01D2796159790B7994D2B0DDC3926298E58096A791B3746D70CC8B959CA38AD12D8F992C88D098A61DA94AA409D4F19EAD65281CB5685CCA44A41D2587346B73261953A5FDAB898B5714A291BB84E5EBF4EAA0FA895A953CAAA2DA652AC8D55A92FC6C1D58CD1924957F7A09284DD488AFFB6B22364B7653BA8BAA294806AF5B5528823C789AC318DB6710F2A57B88DE2C6FDAA29406691DACCAA2BF2ADAAA4D12A3B0A75F3446853391FBB3095C34FAE4DAB38BD03DC346A95A9BA43D7C7552337DD633D4976E4289134A613AA2DD6E16ECAAD533DD41E345089D337568658A2AD2951A4ADD7AC6E0E79AD6D318D45137D912339CD8253FB584B450DA2543ABE13522D228BA6F9DD9098D96175D61CA28DEB59B5570EC6A1F56EA2550CD8680E498BD50A964D1A297A1089DDCD24EF206C48CFB3858DA0DD598EB3178E40DE52269CA4EB804A4775AA078DB6192DEF0E466F6D684EB40C3A6B5EC8B1CB0AB20DA4B62DAB024446A08ED29167611A41EFC05AECAE246BFB82A3B5781805C381E8CA8B5F592D631CDB3B22F788D7DE1AE775E81E2C396EAA2C34FE5BB341D236A05A933468A81AA0B6E426954F989B11472501A4DDB2234785A026697114B9C660EAA479D904EF40634611EF7A89CC2509B112F6B274CB91C0106C8A14456EB02304D103454EAF1AC6891B47A3542863CEF62D21252B756C27D660DF2A2E95086C411C11C91BC42A8163627A5BAD81ED6D49B416B69A346F7BAF0AE49AD3B4B5C90E6272189BA1F626D61125A59695471973A1AA41F27CBF1637BE882D356DFD746B65D2C66B94A4D345E3394DDB8E7591311B3A33A28E13FBAC575B388ECF386939276C67415287D5422644F53B45D5152527112F43BC294A241B2F4250C57DA318A721DC6A6194B8E581DA0657ADC87A6A6D4DDD1036A695F772D714B49ABD558FB610542FDE26D652119C3292475232EA461EC53282DD78ADDBF8326360D985ECB66C62309428A1149342FC368952B6D6FB81543737B8912A4B116949389318A9B12F3D66AD67B455A934BCB0B42F6B69EC50C8246D83B4DFA66E572D62DD9DB374032B225F46549C1C4B825012BA89C88584BA16D51C228C9BB494E612D420946A89ED58C82EDAEAA02B6BB62FA4C46E1F591E6B21AC661B4F51225F9CA3E466FEE9F41A4357596ED3643C82ACD8113B289EA5FD0DC52D56E82D5BC9AE272CED95A5E5453B584BC35862452D32BA98B2BA5D78DC9730F782516BABA1C155C41AF771D9C4B5C5ACC4B02B46B46372AF2CA53D6D153ACC2E2F0A716F2F6DF2240A77DB4546DB2C46859C584C441BC491E8B63DCBB8E346DB12E2DD568E1BDB12A1E3C83A24030FC1C73AD50B172C212D52A5569AA43F2294ED10189B2B498FD70A2CDE22555AED086295DE266DF51C946DEC306D09CAE909E7B64012159E18931541A7548D8D2C744194C4895CC05A6169C9AD62C58CB85E29421DC491B6C8F1642B4C4DBDA989431D4E8DA2994CAD19602E934672D8379BDA34DC63244D8DAB0F1507D54892DB1865A0A5D4D75D8247A0A5D4D75D147874614D770464922339924500386EDBB66D6604366EDBB66D7200C88DDB4892814717D64406802449922379068024498E2489048024499224E9068024499224197874614D740048921C4992280048922449922900489224499228004892244992814717D6A40280244992248902802449922499028024499224A9028024499224197874614D2800489224C99128004892244992290048922449922A004892244992413717D684028024499224890280244992248902802449922489028024499224197473614D2800489224499228004892244992280048922449922A00489224499281171BD68402802449922489028024C9912489028024499224A9028024499224296C73614D28004892244992280048922449922900489224499228004892244992C23617D684028024499224890280244992248902802449922489028024499224296C73614D28004892244992280048922449922800489224499228004892244992C23617D684028024499224A90280244992248902802449922489028024499224296C73614D28004892244992280048922449922A00489224499228004892244992014817D684028024499224890280244992248902802449922489028024499224598074614D28004892243992280048922449922800489224499228004892244992204817D684028024499224890280244992248902802449922489028024499224098274614D28004892244992280038922449922800489224499228004892244992204817D684028024499224890280244992248902802449922489028024499224098274614D28004892244992280048922449922800489224499228004892244992A3070D59810280244992248902802449921CF91C601CB74DE218638024598D9B6A7E12192D3A04C6AE1B4992BE02C871DCC689D800C6911C3992F2043876DCA669A6278FCD742560E4C87224D94480EC386AE4E82E802CB991E45A536024C56DDB5682F0D4306D04BA92E4C8B1CB023876DBC68DCB04C8B1E3C691D500C67125376EA6F8D4D152036063CB92E2282E802C498A14E92C80E3586E23394F6023478E1B5776119D4C61044676244992CF064872DB34726C02C692DB48764C04B892E4266EE4368FC94226601C4B7224694D80E4B66D13070F80E3466E1C092D6024D771DCE6AC592636DE044692E5B891B08948925B2F8EA996B48D7E38924A59128DBCA88D8ECA25DEB3942492744DD9042F681B3F6EE4B69466643F96EC163786ECC9929CF698BC261ECD5336A2D2A86DF34F46141BB7294D4578501B274AF437A892DBB2411199A5E6415F4293230893E214E460A4458B4CB7A4DCC691A3DF7CA5A5EBB2ED319DD02D1BCC2DC0508B12BD4C3BD229A2B0977153BA6DE4E6974B33C8762BFD4F9028D563B12C83D2A6F5CBA82C02183972DB44272122577FA532A74091D5BB46B07816262D711216891ABD486C0C42711CA966C00CB4927C275AB4083ACE6C48724E77A10E036D60AC29827C80EE601CC9685BCB6E001DEFC27E51CEC065C9BA5DD881B328756D15C851ED4965B71A2C9148B66CBC1A2099A2968DD21E4C92E4263A2E49C9CD5437421BE83463B0F2A30CAE655C53AB62292B517E634EC4FE64539DEEB6EED854C52268F9511D31C7200639A032ADD4368A55A1F992EB2CC8BFB5C9592B178B1E15AEA2DA6A12DA16AB81DA12646259ED62A2F56A555B0BA17D5CE4D5E274122E0DF61A666D93A0AC6912B4259AB65EEB163625E6DC4BA81660A9146D8A4B28A197E2CC6047B9DA6746CFC05C45856613D5A0DA3AF34B98D2E0EB58A6DF057DCEFD09CF1C468E5BCF8DAA0E384619A72E760900C7E9BE41B61836911CFD2A53E7E06F91D262DB26F2199B924104176DDC2455419834F27586BAA1EBB8AAA73C756EF6162815BE9444EB755013CCB4C9EC9D5117A276326B6F563FA6711C7D4952F7E267816AC2922AA9972AAD815528A1BC362DA2CB28917C9DD221EDB26AEB27756C361B2A1D5866A3241B2D1F6082C44A9BAA2216761B27F1D41496965A28D113C7EAA741B5E121596D5BA952A26FC789DBA672E1A6BA51DB44F5A0AF55AE914C6DABBE16AA09123C0835802B1D349A5BAE50551FB0B913ABAC2B1D4450D6248E53D6E62B6115014CC56D4C6A4D8190587EE0B6724113D9B5A69E0DA1DAC6AEBBAB84162251AD163C8A1D5756750C4C2E1B4791DB0A36714AD58DF50C7C8ADC227689981FD2D04AE0B14992916B4D60E938074AE3EAA0634965DC544D80FB748328B375A939495D0F44B623AB042E15C8697045B6AC084259D544CA3015C8B92C75926EBB0C2993F6E1ECD6DA6B6B4B41270BD49200F6A224BAD51A051F22DD3E6D13776687B9354521CE72EC6A52E618446894D86D671C8225526949BE3636957DA3D25246E5DBC2CC60EA36EB9D012D8162B49ED25087819225BEDB082D8162CBD37A1C61946D16D61AC47D94C96C3033468D34118ECF5DA08DE6C6723D795E9250B9710E9761D6E424017DA7B37E3946629438125C3B0762205B91DA76AD41A846AEBCA77D0EA295C435BCADF5335C3F39B072153996CD44B64D6BFE95F552C689FDBA9020E8D4A9287465D4238EE3048C43E048896244AC039BD67BD274EF66BC35B15CE9705C5E71670A6E0825134ABF12D2819BA26D7316FA6C5A24D2C11C0E9294A88DCF87E756C6CC40CF108D1B3C4F819334ADA2A2B462E3386A637F568165194A21CB9135CA75D21C3C76416AF6292D1C445AB4F4293D166D124BE7B5F7C6AD585D4E9818971DD7527198F4BE33561DF0D9B489C5A32CAFD4606EC21A05D05CC49E8496B0982DDAAFD24E42E1DD4D4492904A24C989675AB0B9A4D82F686AB46AA2767248AB9FA6AB3AE5E2D85E9EF43B66EFC0C927F42B055D0B87ABF35344ABD8311787B8F729BA6A299C3C2B33B7E937467C220B3231418E647DA1CC5421CC6296BFA4088CDD9E099CE49CD5CE24A9B203AB38829D46F542A9CC85C61F5646E37585BC88BCD9699AAA4460D5222C1A3F3D94A7E470D12A2B425571B68255378A39DB3427489B9BE27B34C4224A7743CD3DA62C527F4CAA8AE4B5A4B2861656A63526D18E90B0F969B6F756C48FC1F61E456D32787686EEB286B2D0B4043E2A615E55ACA98609AB5BA6ABF2E38562BCD29E36659F28D2E3A636E3B90A96D752F523FB56CD1D8DB0FE659AEA60B0B2A36651CB74A6ABDBF874E153041D6686AB2B6D768D1C3B6E204817D6A49C0EA2C87124F9434372378D6E70A542F45A6154874742605424F51592D39032502136F22A279AE82E489EB3227AF82EAA715C11CDC1208A616CB951E0F7CE2085CF81FC409FA87B8E629FB636A35AAF2164932D03F88E211ABE71E3088EB14812752C56ED35D972B41AD816F3B64ED51C306E93CA8C4F1B3452930AE1A148D5E00293A1251BB95D72ACA1D376B2E35645601CB996640B044024499224197874614D6A0444922449722904C86D2349724200389224499238024872234992413717D6240780244992E488028024499224E903802449922489028024499224196494654D2A00489224499228004892244992280048922449922A004892244992814717D684028024499224A90280244992248902802449922489028024499224396451214D2800469224499228004892244992290048922449922800489224499200
yesnoms
Отправлено: 11 Февраля, 2011 - 19:09:51 • Тема: Проблема с созданием wav файла через php • Форум: Программирование на PHP
Ответов: 20 Просмотров: 1225
Okula пишет: yesnoms , если в базе находится бинарный код то тогда и файл нужно создавать для записи этого бинарного кода:
И ещё: какой тип поля имеет строка
шестнадцатиричный код в базе данных MySQL?
спасибо что напомнил про wb, совсем забыл, правда это не помогло.
В базе код хранится в формате IMAGE.
Потестил разные звонки. Максимальная длительность воспроизведения достигает 39 секунд.
Такое ощущение что данные усекаются при переборе через mssql_fetch_assoc в самом массиве.
Думал, что слишком большие данные шлются, посмотрел php.ini
memory_limit стоит в 128MB, а memory_get_usage() выдает порядка 140кб всего-то
п.с. БД не MySQL а Microsoft SQL Server 2008
p.p.s
копипасть с мелкософта
image
Этот тип представляет двоичные данные переменной длины, включающие от 0 до 2^31 – 1 (2 147 483 647) байт.
yesnoms
Отправлено: 11 Февраля, 2011 - 17:11:03 • Тема: Проблема с созданием wav файла через php • Форум: Программирование на PHP
Ответов: 20 Просмотров: 1225
Всем привет. Прошу помощи в данном вопросе. В общем есть база данных MS SQL в которой хранится шестнадцатиричный код wav записи (система для записи звонков). Сейчас пришло задание написать программу, которая будет давать возможность создавать wav файлы с записью этого звонка.
Делаю я все таким образом. Отправляю через пхп запрос на сервер, который достает мне звонок по его номеру и генерит хтмл ссылку на скачивание этого звонка.
Результат запроса имеет такую структуру
айди звонка | время звонка | имя файла.wav | шестнадцатиричный код |
Сам звонок создается тоже довольно просто:
Из сделанного запроса поиска по номеру берется его байтовый код и записывается через fopen в файл и подсовывается ссылке в хтмл морде. Все вроде бы хорошо, запись проигрывается, но она урезанная, т.е. в переменную передается не весь байт-код, а обрезанный на каком то этапе. почему так происходит не пойму. Какой может быть максимальный размер переменной? потому что сейчас мой скрипт не справляется со звонками даже в 500кб, что очень неприемливо. У кого какие идеи?
собственно вот пример самого цикла который и создает wav
PHP:
скопировать код в буфер обмена
$call = 'calls/sound.wav' ;
echo "<tr>
<td id='name'><a href='?listen&id=" . $rows [ 'ImageFileName' ] . "'>Слушать</a></td>
<td id='user'>" . $rows [ 'AgentName' ] . "</td>
<td id='date'>" . $rows [ 'CallStartTimeStamp' ] . "</td>
</tr>" ;
}
Страниц (1): [1]
Powered by ExBB FM 1.0 RC1. InvisionExBB