Osticket: 1.10 - ํ‹ฐ์ผ“ ๋ชฉ๋ก ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์ค„ ๋‘ ๊ฐœ๋งŒ ์ถœ๋ ฅํ•จ

์— ๋งŒ๋“  2016๋…„ 07์›” 11์ผ  ยท  60์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: osTicket/osTicket

ํ‹ฐ์ผ“ ๋ชฉ๋ก(์—ด๋ฆผ, ๋‹ซํž˜, ์†Œ์œ , ๊ฒ€์ƒ‰)์—์„œ "๋‚ด๋ณด๋‚ด๊ธฐ"๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ฑ๋œ CSV์—๋Š” ์ฒ˜์Œ ๋‘ ์ค„๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
์ด๋Š” ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์•„ํŒŒ์น˜ ๋กœ๊ทธ๋Š” ๋‹ค์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
PHP ๊ฒฝ๊ณ : mysqli_result::close(): 3076ํ–‰์˜ /site_1.10.rc3/include/class.orm.php์—์„œ mysqli_result๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ: http://---------- --------/scp/tickets.php

osTicket 1.10.rc3
์„ผํ† ์Šค 6.8 64b
MySQL 5.1
PHP 5.6

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜๊ตฌ์ ์œผ๋กœ ์ˆ˜์ •ํ•  ๋•Œ๊นŒ์ง€ include/class.export.php ์—์„œ 63 ํ–‰์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

->options(QuerySet::OPT_NOCACHE)

...๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  60 ๋Œ“๊ธ€

"์ฒ˜์Œ ๋‘ ์ค„๋งŒ ํฌํ•จ"์œผ๋กœ @sistemasad๋Š” ์‹ค์ œ๋กœ ์ฒ˜์Œ ์„ธ(3)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ํ…Œ์ŠคํŠธ ์„ค์น˜์—์„œ ๋™์ผํ•œ ๋™์ž‘์„ ๋ด…๋‹ˆ๋‹ค.

1.10rc3
Win2012 R2(IIS8.5 ํฌํ•จ)
PHP 5.6

์•ˆ๋…•ํ•˜์„ธ์š” ์ €๋„ ๊ฐ™์€ ๋ฌธ์ œ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

osTicket 1.10.rc3
์„ผํ† ์Šค 6.8 64b
mysql 5.5.50-cl, libmysql - 5.1.73
PHP 5.6

์•ˆ๋…•ํ•˜์„ธ์š”,
๋‚˜๋Š” ์ด๊ฒƒ์— ๋ช‡ ๋ถ„์„ ๋ณด๋ƒˆ๋‹ค.
class.export.php ํŒŒ์ผ, ํ•จ์ˆ˜ dumpTickets์—์„œ ๋งˆ์ง€๋ง‰ ๋ช…๋ น์€ self::dumpQuery ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ˜ํ™˜์ž…๋‹ˆ๋‹ค.
dumpQuery๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” "$options=array"์ž…๋‹ˆ๋‹ค. null๋กœ ์„ค์ •ํ•˜๋ฉด ํ‹ฐ์ผ“์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‚ด๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค. (๋‹ค๋ฅธ ์„ธ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” sql, headers ๋ฐ "csv"์ž…๋‹ˆ๋‹ค)

๋ฌธ์ œ๋Š” ์ด ์ค„(๋„ค ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜)์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์˜ต์…˜์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

array('modify' => function(&$record, $keys) use ($fields) {
foreach($k=>$f๋กœ $fields) {
if (($i = array_search($k, $keys)) !== ๊ฑฐ์ง“) {
$record[$i] = $f->export($f->to_php($record[$i]));
}
}
์—์ฝ” $ ๋ ˆ์ฝ”๋“œ
$ ๋ ˆ์ฝ”๋“œ ๋ฐ˜ํ™˜;

๋„์™€์ฃผ์„ธ์š”, ๋‚ด ๋ฌธ์ œ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค

๊ฒฝ๊ณ  : mysqli_result::close(): mysqli_result๋ฅผ ................./include/class.orm.php ๋ผ์ธ 3089 ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค .

๊ฒฝ๊ณ  : mysqli_result::close(): mysqli_result๋ฅผ ................./include/class.orm.php ๋ผ์ธ 3089 ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค .

thuc960,
๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์€ function function dumpTickets($sql, $how='csv') ๋‚ด๋ถ€์˜ 85๋ฒˆ์งธ ์ค„์— ๋Œ€ํ•ด class.export.php ํŒŒ์ผ์—์„œ ์ด ๋ฐ˜ํ™˜ ํ˜ธ์ถœ์„ ๋ณ€๊ฒฝํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

_return self::dumpQuery($tickets,
์ •๋ ฌ(
'๋ฒˆํ˜ธ' => __('ํ‹ฐ์ผ“ ๋ฒˆํ˜ธ'),
'๋งŒ๋“ ' => ('๋งŒ๋“  ๋‚ ์งœ'),'cdata.subject' => __('์ œ๋ชฉ'),'user.name' => __('๋ณด๋‚ธ์‚ฌ๋žŒ'),'user.default_email.address' => __('์ด๋ฉ”์ผ์—์„œ'),'cdata.:priority.priority_desc' => __('์šฐ์„ ์ˆœ์œ„'),'๋ถ€์„œ::getLocalName' => __('๋ถ€์„œ'),'์ฃผ์ œ::getName' => __('๋„์›€๋ง ์ฃผ์ œ'),'์†Œ์Šค' => __('์†Œ์Šค'),'์ƒํƒœ::getName' => ('ํ˜„์žฌ ์ƒํƒœ'),
'lastupdate' => __('์ตœ์ข… ์—…๋ฐ์ดํŠธ'),
'est_duedate' => __('๋งˆ๊ฐ์ผ'),
'์—ฐ์ฒด' => __('์—ฐ์ฒด'),
'๋‹ต๋ณ€' => __('๋‹ต๋ณ€'),
'์ง์›::getName' => __('์—์ด์ „ํŠธ ํ• ๋‹น'),
'ํŒ€::getName' => __('ํŒ€ ์ง€์ •'),
'thread_count' => __('์Šค๋ ˆ๋“œ ์ˆ˜'),
'attachment_count' => __('์ฒจ๋ถ€ ํŒŒ์ผ ๊ฐœ์ˆ˜'),
) + $cdata,
$์–ด๋–ป๊ฒŒ,
array('modify' => function(&$record, $keys) use ($fields) {
foreach($k=>$f๋กœ $fields) {
if (($i = array_search($k, $keys)) !== ๊ฑฐ์ง“) {
$record[$i] = $f->export($f->to_php($record[$i]));
}
}
์—์ฝ” $ ๋ ˆ์ฝ”๋“œ
$ ๋ ˆ์ฝ”๋“œ ๋ฐ˜ํ™˜;
})
);_

์ด๊ฒƒ์œผ๋กœ ($how ๋’ค์˜ ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜์‹ญ์‹œ์˜ค):

_return self::dumpQuery($tickets,
์ •๋ ฌ(
'๋ฒˆํ˜ธ' => __('ํ‹ฐ์ผ“ ๋ฒˆํ˜ธ'),
'๋งŒ๋“ ' => ('๋งŒ๋“  ๋‚ ์งœ'),'cdata.subject' => __('์ œ๋ชฉ'),'user.name' => __('๋ณด๋‚ธ์‚ฌ๋žŒ'),'user.default_email.address' => __('์ด๋ฉ”์ผ์—์„œ'),'cdata.:priority.priority_desc' => __('์šฐ์„ ์ˆœ์œ„'),'๋ถ€์„œ::getLocalName' => __('๋ถ€์„œ'),'์ฃผ์ œ::getName' => __('๋„์›€๋ง ์ฃผ์ œ'),'์†Œ์Šค' => __('์†Œ์Šค'),'์ƒํƒœ::getName' => ('ํ˜„์žฌ ์ƒํƒœ'),
'lastupdate' => __('์ตœ์ข… ์—…๋ฐ์ดํŠธ'),
'est_duedate' => __('๋งˆ๊ฐ์ผ'),
'์—ฐ์ฒด' => __('์—ฐ์ฒด'),
'๋‹ต๋ณ€' => __('๋‹ต๋ณ€'),
'์ง์›::getName' => __('์—์ด์ „ํŠธ ํ• ๋‹น'),
'ํŒ€::getName' => __('ํŒ€ ์ง€์ •'),
'thread_count' => __('์Šค๋ ˆ๋“œ ์ˆ˜'),
'attachment_count' => __('์ฒจ๋ถ€ ํŒŒ์ผ ๊ฐœ์ˆ˜'),
) + $cdata,
$์–ด๋–ป๊ฒŒ,
์—†๋Š”
);_

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ์ด์œ ๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ;-)
๋ฌธ์•ˆ ์ธ์‚ฌ.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ณด๋‚ด๊ธฐ์—๋Š” 2์žฅ์˜ ํ‹ฐ์ผ“๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฏธ RC3์™€ RC2์— ์žˆ์—ˆ๊ณ  ์ง€๊ธˆ์€ ๋งˆ๊ตฌ๊ฐ„์—?!

@JediKev @protich
v1.10(901e5ea) ํ…Œ์ŠคํŠธ ์„œ๋ฒ„์—์„œ ์ด ๋ณด๊ณ ์„œ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ๋„ํ–ˆ๊ณ  ๋” ๋งŽ์ด ๋‚ด๋ณด๋‚ด์ง€๋งŒ ์—ฌ์ „ํžˆ ๋กœ๊ทธ์— PHP ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
[04-Nov-2016 14:49:25 UTC] PHP ๊ฒฝ๊ณ : mysqli_result::free(): 185ํ–‰์˜ \support.110\include\mysqli.php์—์„œ mysqli_result๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ์ด๊ฒƒ์€ @greezybacon ์ด mysli ๋ฐ ORM์—์„œ DB์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค ๋ณ€๊ฒฝ์„ ์ค‘๋‹จํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@sistemasad๊ฐ€ ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ํŒจ์น˜ํ–ˆ์œผ๋ฉฐ ๋ณด๊ณ ์„œ๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‚ด ์‚ฌ์šฉ์ž ์ง€์ • "์œ„์น˜" ๋“œ๋กญ๋‹ค์šด ํ•„๋“œ๊ฐ€ ๋•Œ๋กœ๋Š” ์ˆซ์ž ํ‘œํ˜„์„, ๋•Œ๋กœ๋Š” ์ˆซ์ž(์‰ผํ‘œ) ์œ„์น˜๋ฅผ

1.10 ์ตœ์ข… ๋ฆด๋ฆฌ์Šค์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ œ์•ˆ๋œ ํŒจ์น˜๋กœ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @rayfosss

์œ„์˜ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋กœ๊ทธ์— PHP ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
PHP ๊ฒฝ๊ณ : mysqli_result::free(): \์—์„œ mysqli_result๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.185ํ–‰์˜ \include\mysqli.php

free() ํ•จ์ˆ˜(185ํ–‰์˜ mysqli.php)๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ํ–‰์œผ๋กœ ํ˜ธ์ถœํ•˜๋ฉด ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

+1 ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@HansLe - ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์…จ๋‚˜์š”? ์–ด๋–ป๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์–ด๋””์„œ free() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ์Šต๋‹ˆ๊นŒ?

@tdefreest , ๋‚ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ์ค„(185๋ฒˆ)์— ์ฃผ์„์„ ๋‹ฌ์•˜๋‹ค.
// $__db->unbuffered_result->free();
๋ชจ๋“ˆ include\mssqli.php์—์„œ

@sistemasad ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

3813

@sistemasad ์˜ ์†”๋ฃจ์…˜์— ๋”ฐ๋ผ ๋ผ์ธ์— ์ฃผ์„์„

@demenna์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์ˆซ์ž๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ด์ œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์ˆซ์ž๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

@sistemasad ๊ฐ€ ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ ์ฝ”๋“œ๋Š” ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜•์‹ํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ์˜ ์–ด๋”˜๊ฐ€์— ์žˆ๋Š” ๋ฒ„๊ทธ๋กœ ์ธํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋ฒ„๊ทธ๊ฐ€ ๋ฐฉ์ง€๋˜์ง€๋งŒ ํ˜•์‹ ์ง€์ • ๋…ผ๋ฆฌ๋„ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์ˆซ์ž๋กœ ๋‚ด๋ณด๋‚ด๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

@HansLe ์˜ ์ถ”๊ฐ€์— ๋Œ€ํ•œ ๋‚˜์˜ ์ดํ•ด๋Š” ์ฒซ ๋ฒˆ์งธ ์ˆ˜์ •์ด ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ๋ฐฉ์ง€ํ•˜์ง€ ๋ชปํ–ˆ๊ณ  ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ํ–‰๋™์„ ์ง์ ‘ ๋ณธ ์ ์ด ์—†๋‹ค.

์šฐ๋ฆฌ์—๊ฒŒ ์—ฌ์ „ํžˆ ํ•„์š”ํ•œ ๊ฒƒ์€ ํฌ๋งทํŒ… ๋กœ์ง์„ ๋ณด์กดํ•˜๋Š” ์ง„์ •ํ•œ ์ˆ˜์ •์ž…๋‹ˆ๋‹ค.

๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ๋ชจ๋“  ํ‹ฐ์ผ“์„ ๋‚ด๋ณด๋‚ธ ๋‹ค์Œ ๋‚ด๋ณด๋‚ด๊ธฐ์— ์ฑ„์›Œ์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ ๋ชฉ๋ก์— ์ผ๋ถ€ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์–‘์‹ ํ‹ฐ์ผ“ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ์ด์ œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์ง€๋งŒ ์ฒ˜์Œ 2๊ฐœ๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ˆ˜์ถœ ๋ผ์ธ. ์ง€๊ธˆ๊นŒ์ง€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ทจ์†Œํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์ ์ ˆํ•œ ํ•ด๊ฒฐ์ด ํ•„์š”ํ•œ ์ผ์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์œ„์˜ ๋‚ด์šฉ์€ ํ•ด๊ฒฐ์ด ์•„๋‹ˆ๋ฉฐ ์ ์ ˆํ•œ ํ•ด๊ฒฐ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„, ์—ฌ๋Ÿฌ ์žฅ์˜ ํ‹ฐ์ผ“์œผ๋กœ ์กฐ๊ธˆ ํ—ค๋งค์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ ์–ด๋„ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‚ด๋ณด๋‚ด๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„์ง ์™„์ „ํ•œ ์†”๋ฃจ์…˜์ด ์—†์Šต๋‹ˆ๋‹ค. ์ œ๋Œ€๋กœ ๋‚ด๋ณด๋‚ด์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ๋‹ค๋ฉด 10์›” 26์ผ ๋Œ“๊ธ€์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์„ ์•Œ๋ ค์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋„์›€์ด๋˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉฐ class.export.php ํŒŒ์ผ์—์„œ 54 ์ฃผ๋ณ€์˜ ์‚ฌ์šฉ์ž ์ •์˜ ์—ด์„ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋กœ ์ธํ•ด ์ „์ ์œผ๋กœ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์Šค๋ ˆ๋“œ์˜ ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์€ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค(์ €๋ฅผ ์œ„ํ•ด).

// $sql ๋ฌธ์— ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ์ถ”๊ฐ€
$cdata = $fields = array();
foreach (TicketForm::getInstance()->getFields() as $f) {
// ํ•ต์‹ฌ ํ•„๋“œ ๋ฌด์‹œ
if (in_array($f->get('์ด๋ฆ„'), ๋ฐฐ์—ด('์šฐ์„ ์ˆœ์œ„')))
๊ณ„์†ํ•˜๋‹ค;
// ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹Œ ํ•„๋“œ ๋ฌด์‹œ
elseif (!$f->hasData() || $f->isPresentationOnly())
๊ณ„์†ํ•˜๋‹ค;

        $name = $f->get('name') ?: 'field_'.$f->get('id');
        $key = 'cdata.'.$name;
        $fields[$key] = $f;
        $cdata[$key] = $f->getLocal('label');

์ด ์ฝ”๋“œ์˜ ๋งˆ์ง€๋ง‰ ์„น์…˜์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ์šฐ์„  ์ˆœ์œ„ ์—ด์„ ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์ „ํ˜€ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ์—ด์ด ์žˆ์–ด์•ผ ํ•˜๋Š” ์œ„์น˜ ๋Œ€์‹ ).

์•„๋งˆ๋„ ์ด ์ •๋ณด๋Š” ๊ฒฝํ—˜์ด ๋” ๋งŽ์€ ์‚ฌ๋žŒ์„ ์œ„ํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์ •ํ™•ํžˆ ์ง€์ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฌ๋“ ์ง€ ๋‚˜์—๊ฒŒ ํ”ผ๋“œ๋ฐฑ/์ œ์•ˆ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ž์œ ๋กญ๊ฒŒ ๋Š๋ผ์‹ญ์‹œ์˜ค.

์ด ๋„์›€์€ ๋ชจ๋“  ์ „๋ฌธ๊ฐ€๋ฅผ ์ˆ˜์ง‘ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค :(

@protich @JediKev
์ด๊ฒƒ์ด ์กฐ์‚ฌ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›๋ž˜ v 1.9์—์„œ v 1.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ๋ฐœ์ƒ: ๋‘ ํ•ญ๋ชฉ๋งŒ ๋‚ด๋ณด๋‚ธ ํ›„ csv๋กœ์˜ ํ‹ฐ์ผ“ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค(ํŒŒ์ผ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ƒ์„ฑ๋จ). ์ด ์Šค๋ ˆ๋“œ์˜ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๊ฐ€ ํ‚ค-๊ฐ’ ์Œ์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์ •๋ณด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์ˆ˜๋™ ์ž‘์—…์„ ์œ ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ v 1.10.1 ๋ฆด๋ฆฌ์Šค์—์„œ๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.

์—ฌ๊ธฐ์—์„œ๋„ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
osTicket ๋ฒ„์ „ | v1.10.1(9ae093d) โ€” ์ตœ์‹ 
์›น ์„œ๋ฒ„ ์†Œํ”„ํŠธ์›จ์–ด | Apache/2.4.6(CentOS) OpenSSL/1.0.1e-fips PHP/5.4.16
MySQL ๋ฒ„์ „ | 5.5.52
PHP ๋ฒ„์ „ | 5.4.16

์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋กœ ํ‹ฐ์ผ“์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋ชจ๋‘ CSV์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถœ๋ ฅ๋˜์ง€๋งŒ, ์ด ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก์—์„œ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‘ ๊ฐœ์˜ ํ–‰๋งŒ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. CSV.

์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ˆ˜์ •์œผ๋กœ ๋ชจ๋“  ํ–‰์ด ์ถœ๋ ฅ๋˜์ง€๋งŒ CSV์— ์‚ฌ์šฉ์ž ์ •์˜ ๋ชฉ๋ก์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์œผ๋ฏ€๋กœ ๋” ๋งŽ์€ ์ œ์•ˆ์„ ํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ œ์ž„์Šค.

์šฐ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜๊ตฌ์ ์œผ๋กœ ์ˆ˜์ •ํ•  ๋•Œ๊นŒ์ง€ include/class.export.php ์—์„œ 63 ํ–‰์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

->options(QuerySet::OPT_NOCACHE)

...๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘ ๋‹ค์‹œ ๋‚ด๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”.

์ด ์†”๋ฃจ์…˜ ๋•๋ถ„์— ์ด์ œ ๋ชจ๋“  ํ‹ฐ์ผ“์ด ํ‘œ์‹œ๋˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก ํ•„๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ๋ชฉ๋ก ํ•ญ๋ชฉ๋งŒ ํ‘œ์‹œ๋˜์ง€๋งŒ ๋‹ค๋ฅธ ํ•ญ๋ชฉ์€ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก์— '์‚ฌ๊ณผ'์™€ '๋ฐฐ'๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ ํ‹ฐ์ผ“์€ '์‚ฌ๊ณผ'๋งŒ ๋ณด์—ฌ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ์ž„์Šค.

๊ธ€์Ž„, ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ์ˆ˜์ •ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค... ์•„๋งˆ๋„ ์šฐ๋ฆฌ๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๋งŒํผ ๊นจ๋—ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์ „์ฒด dumptickets ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค(ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ 83ํ–‰์—์„œ ์‹œ์ž‘๋จ)

static function dumpTickets($sql, $how='csv') {
    // Add custom fields to the $sql statement
    $cdata = $fields = array();
    foreach (TicketForm::getInstance()->getFields() as $f) {
        // Ignore core fields
        if (in_array($f->get('name'), array('priority')))
            continue;
        // Ignore non-data fields
        elseif (!$f->hasData() || $f->isPresentationOnly())
            continue;

        $name = $f->get('name') ?: 'field_'.$f->get('id');
        $key = 'cdata.'.$name;
        $fields[$key] = $f;
        $cdata[$key] = $f->getLocal('label');
    }
    // Reset the $sql query
    $tickets = $sql->models()
        ->select_related('user', 'user__default_email', 'dept', 'staff',
            'team', 'staff', 'cdata', 'topic', 'status', 'cdata__:priority')
        ->options(QuerySet::OPT_NOCACHE)
        ->annotate(array(
            'collab_count' => TicketThread::objects()
                ->filter(array('ticket__ticket_id' => new SqlField('ticket_id', 1)))
                ->aggregate(array('count' => SqlAggregate::COUNT('collaborators__id'))),
            'attachment_count' => TicketThread::objects()
                ->filter(array('ticket__ticket_id' => new SqlField('ticket_id', 1)))
                ->filter(array('entries__attachments__inline' => 0))
                ->aggregate(array('count' => SqlAggregate::COUNT('entries__attachments__id'))),
            'thread_count' => TicketThread::objects()
                ->filter(array('ticket__ticket_id' => new SqlField('ticket_id', 1)))
                ->exclude(array('entries__flags__hasbit' => ThreadEntry::FLAG_HIDDEN))
                ->aggregate(array('count' => SqlAggregate::COUNT('entries__id'))),
        ));

    // Fetch staff information
    // FIXME: Adjust Staff model so it doesn't do extra queries
    foreach (Staff::objects() as $S)
        $S->get('junk');

    //custom list
    $sql = 'SELECT type, name FROM ost_form_field WHERE type like "list%" ';  //fields
    $query = db_query($sql);
    $type_lists = array();
    while($row = mysqli_fetch_assoc($query)){
      $type_lists[] = $row;
    }

    $list = array();
    foreach($type_lists as $type_list){
      $list_id = intval(substr($type_list['type'], 5));

      $sql = 'SELECT id, value FROM ost_list_items WHERE list_id = '.$list_id; //list elements
      $query = db_query($sql);
      while($row = mysqli_fetch_assoc($query)){
        $list[$type_list['name']][$row['id']] = $row['value'];
      }
    }

    $cambio = array('modify' => function(&$record, $keys) use ($fields, $list) {
      $fields_array = array();
      foreach($keys as $key => $row){
        if(strpos($row, 'cdata.') === 0){ 
          $fields_array[$key] = substr($row, 6);
          if(isset($list[$fields_array[$key]]))
            $fields_list[] = $key;
        }
      }
      foreach ($fields as $k=>$f) {
        if (($i = array_search($k, $keys)) !== false) {
          if(in_array($i, $fields_list)){
            $record[$i] = $list[$fields_array[$i]][intval($record[$i])];
          }else{
            $record[$i] = $f->export($f->to_php($record[$i]));
          }
        }
      }
      return $record;
    });

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค .....

Razarate์˜ ์†”๋ฃจ์…˜์€ ์•ฝ๊ฐ„์˜ ์ˆ˜์ •์œผ๋กœ ์ €์—๊ฒŒ ๋งค๋ ฅ์ฒ˜๋Ÿผ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” razarate๊ฐ€ ์ˆ˜์ •๋œ dumptickets ๊ธฐ๋Šฅ์˜ ๋‹ค์Œ ํ•„์ˆ˜ ๋ถ€๋ถ„์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์„ ์žŠ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค:

 return self::dumpQuery($tickets,
        array(
            'number' =>         __('Ticket Number'),
            'created' =>        __('Date Created'),
            'cdata.subject' =>  __('Subject'),
            'user.name' =>      __('From'),
            'user.default_email.address' => __('From Email'),
            'cdata.:priority.priority_desc' => __('Priority'),
            'dept::getLocalName' => __('Department'),
            'topic::getName' => __('Help Topic'),
            'source' =>         __('Source'),
            'status::getName' =>__('Current Status'),
            'lastupdate' =>     __('Last Updated'),
            'est_duedate' =>    __('Due Date'),
            'isoverdue' =>      __('Overdue'),
            'isanswered' =>     __('Answered'),
            'staff::getName' => __('Agent Assigned'),
            'team::getName' =>  __('Team Assigned'),
            'thread_count' =>   __('Thread Count'),
            'attachment_count' => __('Attachment Count'),
        ) + $cdata,
        $how,
        $cambio
        );

์•ˆ๋…•ํ•˜์„ธ์š”, v1.10.1์—์„œ ์–ธ์ œ ์ˆ˜์ •๋  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

1.10.1์€ ์ด๋ฏธ ๋‚˜์™”๊ณ ... ๊ทธ๋ž˜์„œ 1.10.1์—์„œ ์ˆ˜์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
1.11์ด ์ถœ์‹œ๋˜๋ฉด ์ˆ˜์ •๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์‹ญ๋‹ˆ๊นŒ,
@ntzier ์ˆ˜์ •ํ•œ class.export.php๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@elma1003 ์‘?

๋Œ“๊ธ€๋กœ 1.10 ํŒจ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค
//->options(QuerySet::OPT_NOCACHE)
์ด ํ›„ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ v1.10.1(9ae093d)์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ์•ˆ๋˜๊ณ  3์ค„๋งŒ ๋‚˜์˜ต๋‹ˆ๋‹ค.
ํŒจ์น˜๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ์ž˜ ์•ˆ๋˜๋„ค์š”
https://github.com/osTicket/osTicket/releases/tag/v1.10.2 ์—์„œ 1.10.2๋ฅผ ๋‹ค์šด๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ class.export.php๋Š” 1.10๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
๋„์™€์ฃผ์„ธ์š”....

@elma1003 Razarate์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

@elma1003 @kclubok

์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์€ ๊ณง ์ถœ์‹œ๋  v1.11.0rc-1 ๋ฒ„์ „์— ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

@elma1003

๋ฐฉ๊ธˆ v1.10.1 ์ธ์Šคํ„ด์Šค์—์„œ ํ•ด๋‹น ์ค„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ชจ๋“  ํ‹ฐ์ผ“์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‚ด๋ณด๋‚ด๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๊ฑด๋ฐฐ.

์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•œ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

kclubok์˜ ํ”ผ๋“œ๋ฐฑ์„ ํฌํ•จํ•˜์—ฌ razarate์˜ ์†”๋ฃจ์…˜์„ ์‹œ๋„ํ•˜๊ณ  class.export.php ํŒŒ์ผ์˜ 1.11.x ๋ฒ„์ „ ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ด€๋ฆฌํ–ˆ๋˜ ์นœ์ ˆํ•œ ์˜ํ˜ผ์ด ์ˆ˜์ •๋œ class.export.php ํŒŒ์ผ์„ ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์ด ๊ณ ์ •์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ‘์ž๊ธฐ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌด์Šจ ์ผ์ด ์ผ์–ด ๋‚ฌ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

@JediKev

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” v.11.0rc-1์— ๋Œ€ํ•œ ์ปค๋ฐ‹์„ ์•Œ๋ ค ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ฝค ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ˆ˜์ • ์‚ฌํ•ญ์ด ๋‹จ์ˆœํžˆ ํ•ด๋‹น ์ค„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์˜ฌ๋ฐ”๋ฅธ ๋™์ž‘์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

evertvh์— ์žˆ๋Š” class.export.php ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋‚˜์—ด๋œ ๋‹ค์–‘ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๊ธฐ์จ์ด ์—†์Šต๋‹ˆ๋‹ค.

osticket ํฌ๋Ÿผ - http://osticket.com/forum/discussion/92606/customising-ticket-csv- ์— ์ž์„ธํžˆ ์„ค๋ช…๋œ ๋Œ€๋กœ ๊ฐ ์‚ฌ์šฉ์ž๊ฐ€ ์†ํ•œ "์กฐ์ง"์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ์—ด์ด ์ถ”๊ฐ€๋œ ์ˆ˜์ •๋œ csv ํ˜•์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@Zixt

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ v1.11.0rc-1 ์—์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค(_๋งค์šฐ_ ๊ณง ์ถœ์‹œ, ์›”์š”์ผ๊นŒ์ง€). ์›๋ž˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ๊ณผ ํ•จ๊ป˜ ๋‚ด๋ณด๋‚ผ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉ์ž ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ.

์—๋””์ œ๋””์ผ€๋ธŒ

์•„ ์ข‹์•„ - ์ข‹์€๋ฐ.

๊ฑด๋ฐฐ.

์•ˆ๋…•ํ•˜์„ธ์š” @JediKev

์„ค์น˜ ์‹œ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค๋กœ ์—…๋ฐ์ดํŠธํ–ˆ์ง€๋งŒ ๋Œ€๊ธฐ์—ด์„ ๋‚ด ์‚ฌ์–‘์— ๋งž๊ฒŒ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌผ์–ด๋ณผ ๊ณณ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ "์‚ฌ์šฉ์ž/์กฐ์ง/์ด๋ฆ„"์œผ๋กœ ์„ค์ •๋œ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€๊ธฐ์—ด ํŽ˜์ด์ง€์— "์กฐ์ง"์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ - ๋‚ด๋ณด๋‚ด๊ธฐ ํƒญ์— ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์—†์œผ๋ฉฐ ๋ฏธ๋ฆฌ ์ •์˜๋œ ํ•„๋“œ ํ—ค๋” ์ง‘ํ•ฉ์—์„œ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋†“์น˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@Zixt

์ด๊ฒƒ์€ ๊ท€ํ•˜์˜ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•˜๋Š” ๊ณณ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ž์‹ ์˜ ๋ฌธ์ œ๋ฅผ ์—ด๊ณ  ์ƒˆ ๋ฌธ์ œ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋งํ•˜๋ฉด์„œ ๋‚˜๋Š” ๋‹น์‹ ์ด ์ตœ์†Œํ•œ ๋น ๋ฅธ ๋‹ต๋ณ€์„ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์•„๋ž˜์— ๋‹ต๋ณ€์„ ๊ฒŒ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ‘

_ ๋ฉด์ฑ… ์กฐํ•ญ: ๋‹ค์Œ์€ v1.11.0rc-1 ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. _

ํ˜„์žฌ ์ด ๊ธฐ๋Šฅ์€ 1๋‹จ๊ณ„(๋˜๋Š” ๋ฒ„์ „ 1)์—๋งŒ ์žˆ๊ณ  ์ œํ•œ์ ์ด๋ฏ€๋กœ ์‚ฌ์šฉ์ž ํ•„๋“œ, ์กฐ์ง ํ•„๋“œ ๋“ฑ์„ ์‚ฌ์šฉ์ž ์ •์˜ ๋Œ€๊ธฐ์—ด ๋‚ด๋ณด๋‚ด๊ธฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ถ„์•ผ๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ ์  ๋” ํ™•์žฅ๋  ๊ฒƒ์ด๋ผ๊ณ  _๋ฏฟ์Šต๋‹ˆ๋‹ค_. ๊ด€๋ฆฌ์ž ํŒจ๋„ > ์„ค์ • > ํ‹ฐ์ผ“ > ๋Œ€๊ธฐ์—ด > ๋Œ€๊ธฐ์—ด ์ด๋ฆ„ ํด๋ฆญ > ๋‚ด๋ณด๋‚ด๊ธฐ > ๊ธฐํƒ€ ํ•„๋“œ ์ถ”๊ฐ€์—์„œ ์ง€๊ธˆ ์ถ”๊ฐ€/์žฌ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ•„๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

_(์ด์ „์— ๋‹ต๋ณ€์„ ์ž˜๋ชปํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด Exporter์— ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์ตœ์†Œํ•œ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!)_

** ์‚ฌ์ด๋“œ ๋…ธํŠธ

์ƒ๋‹ด์› ํŒจ๋„ > ์‚ฌ์šฉ์ž > ์‚ฌ์šฉ์ž ๋””๋ ‰ํ„ฐ๋ฆฌ ๋กœ ์ด๋™ํ•˜๊ณ  ํ•˜๋‹จ์˜ ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ์‚ฌ์šฉ์ž์˜ ์กฐ์ง ์ด๋ฆ„์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๊ฑด๋ฐฐ.

๋™์ผํ•œ " 1.10 - ํ‹ฐ์ผ“ ๋ชฉ๋ก ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” 1.10.1์—์„œ ์—…๋ฐ์ดํŠธํ•œ ํ›„ 1.10.4์—์„œ ๋‘ ๊ฐœ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„๋งŒ ์ถœ๋ ฅํ•จ"

์ด๊ฒƒ์€ ๊ทธ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[์„ ํƒ A3. staff_id ๊ทธ๋Œ€๋กœ lock__staff_id , A1. staff_id ๊ทธ๋Œ€๋กœ staff_id , A1. isoverdue ๊ทธ๋Œ€๋กœ isoverdue , A1. team_id ๊ทธ๋Œ€๋กœ team_id , A1. ticket_id ๊ทธ๋Œ€๋กœ ticket_id , A1. number ๊ทธ๋Œ€๋กœ number , A4. subject ๊ทธ๋Œ€๋กœ cdata__subject , A6. address ๊ทธ๋Œ€๋กœ user__default_email__address , A1. source ๊ทธ๋Œ€๋กœ source , A7. priority_color ๊ทธ๋Œ€๋กœ cdata__:priority__priority_color , A7. priority_desc ๊ทธ๋Œ€๋กœ cdata__:priority__priority_desc , A1. status_id ๊ทธ๋Œ€๋กœ status_id , A8. name ๊ทธ๋Œ€๋กœ status__name , A8. state ๊ทธ๋Œ€๋กœ status__state , A1. dept_id ๊ทธ๋Œ€๋กœ dept_id , B0. name ๊ทธ๋Œ€๋กœ dept__name , A5. name ๊ทธ๋Œ€๋กœ user__name , A1. lastupdate ๊ทธ๋Œ€๋กœ lastupdate , A1. isanswered ๊ทธ๋Œ€๋กœ isanswered , B1. firstname ๊ทธ๋Œ€๋กœ staff__firstname , B1. lastname ๊ทธ๋Œ€๋กœ staff__lastname , B2. name AS team__name , (SELECT COUNT(R0. id ) AS count FROM ost_thread Q7 JOIN ost_ticket Q8 ON (Q7. object_type = 'T' AND Q7. object_id = Q8. ticket_id ) LEFT JOIN ost_thread_collaborator R0 ON (Q7. id = R0. thread_id ) WHERE Q8. ticket_id = A1. ticket_id ) AS collab_count, (SELECT COUNT(R1. id ) AS count FROM ost_thread Q7 JOIN ost_ticket Q8 ON (Q7. object_type = 'T' AND Q7. object_id = Q8. ticket_id ) LEFT JOIN ost_thread_entry R0 ON (Q7. id = R0. thread_id ) LEFT JOIN ost_attachment R1 ON (R1. type = 'H' AND R0. id = R1. object_id ) WHERE Q8. ticket_id = A1. ticket_id AND R1. inline = 0) AS attachment_count, (SELECT COUNT(R0. id ) AS count FROM ost_thread Q7 JOIN ost_ticket Q8 ON (Q7. object_type = 'T' AND Q7. object_id = Q8. ticket_id ) LEFT JOIN ost_thread_entry R0 ON (Q7. id = R0. thread_id ) WHERE Q8. ticket_id = A1. ticket_id AND NOT R0. flags & 4 != 0) AS thread_count FROM ost_ticket A1 JOIN (SELECT Q7. ticket_id FROM ost_ticket Q7 JOIN ost_ticket_status Q8 ON (Q7. status_id = Q8. id ) WHERE Q8. state state = '์—ด๊ธฐ' AND (Q7. staff_id = 2 ๋˜๋Š” Q7. team_id IN (1)) ๋˜๋Š” Q7. dept_id IN ('1', '2', '3')) Q7๊นŒ์ง€ ์ฃผ๋ฌธ. ASC LIMIT 25) A2 LEFT JOIN `ost_lock` A3 ON (A1.`lock_id` = A3.`lock_id` AND A3.`expire` > NOW()) LEFT JOIN `ost_ticket__cdata` A4 ON (A1.`ticket_id` = A4.`ticket_id`) JOIN `ost_user` A5 ON (A1.`user_id` = A5.`id`) LEFT JOIN `ost_user_email` A6 ON (A5.`default_email_id` = A6.`id`) LEFT JOIN `ost_ticket_priority` A7 ON (A4.`priority` = A7.`priority_id`) JOIN `ost_ticket_status` A8 ON (A1.`status_id` = A8.`id`) JOIN `ost_department` B0 ON (A1.`dept_id` = B0.`id`) LEFT JOIN `ost_staff` B1 ON (A1.`staff_id` = B1.`staff_id`) LEFT JOIN `ost_team` B2 ON (A1.`team_id` = B2.`team_id`) WHERE A1.`ticket_id` = A2.`ticket_id` GROUP BY A3.`staff_id`, A1.`staff_id`, A1.`isoverdue`, A1.`team_id`, A1.`ticket_id`, A1.`number`, A4.`subject`, A6.`address`, A1.`source`, A7.`priority_color`, A7.`priority_desc`, A1.`status_id`, A8.`name`, A8.`state`, A1.`dept_id`, B0.`name`, A5.`name`, A1.`lastupdate`, A1.`isanswered`, B1.`firstname`, B1.`lastname`, B2.`name` ORDER BY A1. ASC]

์•Œ ์ˆ˜ ์—†๋Š” ์—ด 'Q7.' '์ฃผ๋ฌธ ์กฐํ•ญ'์—์„œ



---- ์—ญ์ถ”์  ----

0(๋ฃจํŠธ)/include/mysqli.php(204): osTicket->logDBError('DB ์˜ค๋ฅ˜ #1054', '[SELECT A3.`sta...')

1 (๋ฃจํŠธ)/include/class.orm.php(3136): db_query('SELECT A3.`staf...', true, true)

2(๋ฃจํŠธ)/include/class.orm.php(3183): MySqlExecutor->execute()

3(๋ฃจํŠธ)/include/class.orm.php(1868): MySqlExecutor->getArray()

4(๋ฃจํŠธ)/include/class.orm.php(1818): HashArrayIterator->{ํด๋กœ์ €}()

5 (๋ฃจํŠธ)/include/class.orm.php(1797): CallbackSimpleIterator->next()

6(๋ฃจํŠธ)/include/class.orm.php(1806): CallbackSimpleIterator->rewind()

7 (๋ฃจํŠธ)/include/class.orm.php(1463): CallbackSimpleIterator->valid()

8(๋ฃจํŠธ)/include/class.orm.php(1480): CachedResultSet->fillTo(9223372036854775807)

9(๋ฃจํŠธ)/include/class.orm.php(1489): CachedResultSet->asArray()

10 (๋ฃจํŠธ)/include/staff/tickets.inc.php(570): CachedResultSet->getIterator()

11 (๋ฃจํŠธ)/scp/tickets.php(495): require_once('(๋ฃจํŠธ)/in...')

12 {๋ฉ”์ธ}

ํ—ค๋”๋งŒ ์žˆ๋Š” v1.11.0-rc1 ๋‚ด๋ณด๋‚ด๊ธฐ.

1.10์ด 1.11rc1๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋จ

๋Œ€์‹œ๋ณด๋“œ ๋‚ด๋ณด๋‚ด๊ธฐ ์ž‘๋™, ํ‹ฐ์ผ“ ๋‚ด๋ณด๋‚ด๊ธฐ: http://xxxxxxxx.xxxxxxx.com/helpdesk/scp/tickets.php?a=export&queue=adhoc ,ikDr5jdnAc์—์„œ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

1.10.4์—๋Š” ์ด๋ฏธ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ์ด ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค. csv ํ—ค๋”์— ๋‘ ์ค„๋งŒ ์žˆ๊ณ  ํ‹ฐ์ผ“ ํ•˜๋‚˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

osTicket ๋ฒ„์ „ | v1.10.4
PHP ๋ฒ„์ „ | 5.6.37

๊ท€ํ•˜์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. "๋‹ซํžŒ" ์ƒํƒœ์˜ ํ‹ฐ์ผ“ ๋ณด๊ณ ์„œ๋ฅผ ๋‚ด๋ณด๋‚ผ ๋•Œ ํŒŒ์ผ์— 1๊ฐœ์˜ ํ‹ฐ์ผ“๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

1.10.1์—์„œ ์ผํ•˜๊ณ  ์žˆ์—ˆ๋‹ค
์ง„์งœ ์ฐจ๋‹จ๊ธฐ
๋‚˜๋Š” ๋ชจ๋‘๊ฐ€ 1.11์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ 1.11 ์•ˆ์ •ํŒ์ด ๋‹ค์Œ ๋‹ฌ์— ๋‚˜์˜ค์ง€ ์•Š๋Š” ํ•œ ์ด ๋ฌธ์ œ๋ฅผ ๊ณ ์น  ๋‹จ์„œ๋ฅผ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค

@lavdnone ์ด ์Šค๋ ˆ๋“œ์—์„œ @JediKev ๊ฐ€ ๊ฒŒ์‹œํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์€ 1.10.0๊ณผ 1.10.4 ๋ชจ๋‘์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
https://github.com/osTicket/osTicket/issues/3264#issuecomment -330262555

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋†“์ณค๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. #3264๊ฐ€ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

@lavdnone ๋งค์šฐ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚จ์€ ํ•˜๋ฃจ ์ž˜ ๋ณด๋‚ด์„ธ์š”! :)

๋˜ํ•œ ๋ชจ๋“  ํ‹ฐ์ผ“์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŒŒ์ผ์—์„œ ์œ„์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ๋•Œ ํ•ญ์ƒ php ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์ž‘์—… ์ค‘์ธ ์™„์ „ํ•œ class.export.php๋ฅผ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@์˜ค์นธ์Šจ

ํ•œ ์ค„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด PHP ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ? ๋‹น์‹ ์ด ์ž˜๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•œ ์ค„๋งŒ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
#3264(๋Œ“๊ธ€)

๊ฑด๋ฐฐ.

์ด ์Šค๋ ˆ๋“œ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋Œ€๋กœ _include/class.export.php_์—์„œ 58ํ–‰์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ–ˆ์œผ๋ฉฐ ์ด์ œ ๋ชจ๋“  ํ‹ฐ์ผ“์„ .csv ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
//->options(QuerySet::OPT_NOCACHE)

Ubuntu 16์˜ OSTicket v1.10.4

์ด ์Šค๋ ˆ๋“œ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋Œ€๋กœ _include/class.export.php_์˜ 58ํ–‰์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ ๋ชจ๋“  ํ‹ฐ์ผ“์„ .csv ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
//->options(QuerySet::OPT_NOCACHE)

์˜ˆ,
๊ทธ๊ฒƒ์€ ๋˜ํ•œ ์ฝ”๋“œ์˜ ์ผ๋ถ€๊ฐ€ ๋ผ์ธ 63์ด์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋จน๋Š” ๋‚ด ํŒŒ์ผ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ... ์ž‘์€ ํ‹ฐ์ผ“ ๋ชฉ๋ก์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์ง€๋งŒ ์ˆ˜์‹ญ๋งŒ ํ‹ฐ์ผ“์ด ํฌํ•จ ๋œ ๋ชฉ๋ก์„ ๊ฐ€์ ธ ๊ฐ€๋ฉด ํ•„์—ฐ์ ์œผ๋กœ ์˜ค๋ฅ˜๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. :-(

_PHP ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜: 3146ํ–‰์˜ include/class.orm.php์—์„œ ํ—ˆ์šฉ๋œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ 536870912๋ฐ”์ดํŠธ๊ฐ€ ์†Œ์ง„๋˜์—ˆ์Šต๋‹ˆ๋‹ค(32๋ฐ”์ดํŠธ ํ• ๋‹น ์‹œ๋„)_

์ œํ•œ์„ 512MB๋กœ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ๋” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๋‹จํ•˜๊ณ  ์ด์ „ ์ œํ•œ์„ ๋ณต์›ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜: @JediKev๊ฐ€ ๊ฒŒ์‹œํ•œ ๋‹ค๋ฅธ ์ˆ˜์ • ์‚ฌํ•ญ๋„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์–ด๋–ค ๊ฒฝ์šฐ์—๋„ ๋ชฉ๋ก์ด ํฌ๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ ๋žจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

73์ดˆ,
์•„๋ฅดํˆฌ๋กœ.

@iw0der

๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๋Œ€ํ•œ ํ‹ฐ์ผ“ ๋‚ด๋ณด๋‚ด๊ธฐ ์ œํ•œ ์‹œ๊ฐ„์„ ํ•ด๊ฒฐํ•˜๋Š” 1.12.x ์‹œ๋ฆฌ์ฆˆ์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ๊ณง ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์ฑ„๋„ ๊ณ ์ • ํ•ด์ฃผ์„ธ์š”.

๊ฑด๋ฐฐ.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰