Apache DSO 개발 정보 좀 부탁드립니다.

antz의 이미지

안녕하세요~

Apache DSO로 간단한 프로그램을 만들어 볼려고 합니다.

MySQL UDF도 예제가 많지 않았지만,

Apache 모듈 프로그램도 의외로 찾아지지 않네요.

웹, 문서, 책 등등 알시고 계신것을 부탁드립니다.

---

잠깐 제 고민도 쓸께요~

처음에는

쓰레드 소켓 프로그램으로 조그만한 검색엔진을 짰거든요.
헌데, 메모리누수, 불안정한 쓰레드 등으로 대체 접속 방법을 찾았습니다.
(검색엔진에만 신경쓰고, 접속부분은 신경쓰기 싫어서... ^^; )

클라이언트가 웹이고,
웹에서 검색결과를 받기만 하면 되므로,
접근이 가능한 방법을 이쪽 저쪽 알아보거든요.
(좀 무식하게 알아보고 있죠~)

분명, 다른 사람도 이런 부분의 문제로 프로그램(라이브러리)를
만들었을 꺼라고 생각합니다.
(비슷한것이 Tmax와 같은 미들웨어가 될것 같네요~)

하여튼,

그래서, MySQL의 UDF를 사용하게 되었습니다.
(UDF의 용도가 검색엔진 Function을 위해 만들진 않았겠지만...)
접속과 메모리쪽을 MySQL이 관리해 주지 않을까?
하는 막연한 생각으로 했는데... 그렇지 못하더군요.

관리적인 이점이 없는건 아니지만,
Debug 만 어려웠습니다.

이번에는 Apache DSO 를 해볼려고 하거든요.

CGI에서 검색어플리케이션을 호출 할까? 도 생각해봤는데...
이렇게 하면 포크를 하는거고, 성능이 많이 떨어지지 않을까?
하는 생각이 들었습니다.
(DSO도 포크와 별반 차이가 없나요?)

MySQL UDF의 경우, MySQL이 뜰때 UDF Function을 메모리에
올리는것 같습니다.
MySQL을 내리지 않고, UDF파일을 덮어쓰면, 메모리 에러가 나더군요.

- Apache DSO를 사용하는것이 괜찮겠는가?
- Apache DSO를 쓸바에는 나는 이걸 추천하겠다...

이 부분에 대해서도 도움을 부탁드립니다. :-)

감사합니다.

fox9의 이미지

apache에서 fastcgi로 작업을 해보시는 건 어떨까요?

antz의 이미지

fox9 wrote:
apache에서 fastcgi로 작업을 해보시는 건 어떨까요?

오~

fastcgi를 찾아봤는데...
내용을 봐서는 제가 딱 필요한 부분인것 같습니다.

C로 개발하게 될텐데...
잘 되었으면 좋겠습니다. :-)

감사합니다~ :-)

purple의 이미지

O'Reilly의 "Writing Apache Modules with Perl and C"라는 책이 있습니다. http://www.oreilly.com/catalog/wrapmod/

Perl로 mod_perl을 이용하여 아파치 내부 동작을 건드리는 내용이 주 내용이지만 C로 모듈을 만드는 내용도 다루고 있습니다. 다만 책이 다루는 내용이 아파치 1.3 을 대상으로 하는 내용이라 2.0에는 적용이 되는지 모르겠습니다. 2.0 내용을 다루는 새 판이 나왔는지는 모르겠군요.

하지만 대부분의 웹 프로그램은 굳이 아파치 모듈로 구현하기보다는 fast-cgi나 아예 php 같은 웹 프로그램 전용 환경으로 구현하는 것이 훨씬 편할 거 같습니다. php도 c 라이브러리와 연결은 모듈을 만들어서 해결하면 되거든요.

antz의 이미지

purple wrote:
O'Reilly의 "Writing Apache Modules with Perl and C"라는 책이 있습니다. http://www.oreilly.com/catalog/wrapmod/

Perl로 mod_perl을 이용하여 아파치 내부 동작을 건드리는 내용이 주 내용이지만 C로 모듈을 만드는 내용도 다루고 있습니다. 다만 책이 다루는 내용이 아파치 1.3 을 대상으로 하는 내용이라 2.0에는 적용이 되는지 모르겠습니다. 2.0 내용을 다루는 새 판이 나왔는지는 모르겠군요.

하지만 대부분의 웹 프로그램은 굳이 아파치 모듈로 구현하기보다는 fast-cgi나 아예 php 같은 웹 프로그램 전용 환경으로 구현하는 것이 훨씬 편할 거 같습니다. php도 c 라이브러리와 연결은 모듈을 만들어서 해결하면 되거든요.


:-) 답변감사드립니다~
나중에 혹시 아파치 모듈을 하게 될때 좋은 정보인것 같네요~

저도 지금 fast-cgi를 분석하고 있습니다.
의외로 어렵지 않게 구현할 수 있을것 같아서...
기분이 좋네요~ :-)

antz의 이미지

간단히 테스트를 했는데...
맘에 듭니다. :-)

테스트 해본것을 강좌로 남겼습니다.

강좌 링크:
http://bbs.kldp.org/viewtopic.php?p=355526#355526

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.