✅ Fila multi-threading
Como usá -lo é o seguinte:
pi@centos: ~ /yadihttpd$ ./yadihttpd
usage: ./yadihttpd < port > < websit root > < log dir >
要提前创建好文件夹和响应静态文件
如:./yadihttpd 80 /home/pi/www /home/pi/yadihttpdlog
pi@centos: ~ /yadihttpd$ sudo ./yadihttpd 80 /home/pi/www /home/pi/yadihttpdlog
应设置euid, 如:chmod u+s ./yadihttpdExemplo de projeto de blog: árvore de arquivos do blog
【Página inicial do blog】
Funções concluídas na versão 0.1:
✅ Imprimir toras, Leia cabeçalhos de mensagem e nomes de arquivos de log são gerados com base no tempo
✅Epoll versão e retorne o arquivo correspondente
✅ Fila de log, comutação automática, escrita de log sozinha thread
✅ Suporte de arquivo grande
✅ Limitações de permissão de leitura de arquivo
✅ Blog simples
Mostrar número específico de linha, função, nome do arquivo
Veja o thread de log:
O thread de log geralmente dorme (a fila está vazia, o que significa que não está ocupado, libera a trava, blocos por um segundo).
? Acesse o log antes do link:
? Acesse o log de link:
? Quando um certo número de registros de log (como 5000), o arquivo será alterado automaticamente.
Leitura de imagem
Suporte de arquivo grande (pode ser alguns bugs)
O epollout lida com buffers e define FDs não bloqueadores. O servidor pode lidar com várias solicitações ao mesmo tempo.
Layout do diretório raiz do arquivo do servidor
pi@raspberrypi: ~ /www $ tree
.
├── blog # marked转换之后的博客
│ ├── linux_notes.html
│ └── test.html
├── css
│ ├── my.css
│ └── prism.css # 代码高亮等等
├── img
│ ├── 1.jpg
│ ├── eg_tulip.jpg
│ ├── lake.jpg
│ └── log.jpg
├── index.html
├── js
│ └── prism.js # 代码高亮等等
└── md # 初始markdown形式
├── linux_notes.md
├── md2html.sh #批量转换脚本 md->html
├── test.md
└── tmp.mdfileA biblioteca usada:
Marcado: Markdown -> HTML
PRISMJS: destaque do código e outros layouts
? Investigação de vazamento de FD
Há algo que eu esqueci de fechar. Depois de testar por um tempo, como mostrado na figura abaixo, parece não haver problemas com vazamento de FD, mas ainda existe um segfault ocasional que ainda não foi encontrado.
? Verificação do erro do segmento
? URL é muito longo: obrigado por testar o programa malicioso do meu site à noite
? URL Correção do erro do diretório de acesso direto, o mesmo que acima.
Um thread accpet, um thread de log e três threads infantis lidam com a solicitação, e cada núcleo é solicitado cerca de 1400 por segundo.