标签: yaws

雅虎作为Rebar依赖

如何在我的Erlang应用程序中将Yaws作为Rebar依赖项安装?

谢谢,

LRP

erlang yaws rebar

3
推荐指数
1
解决办法
970
查看次数

IIS,APACHE,YAWS运行时环境

最近我经历了一篇文章,解释了YAWS服务器的潜力和每秒处理的请求数.有人提到YAWS每秒可以处理80K请求,并且它还可以在多线程环境中运行,以提高请求处理限制.

我们如何比较IIS,Apache和YAWS?哪一个会处理最大请求?我可以在某处找到任何比较吗?

apache iis yaws

2
推荐指数
1
解决办法
868
查看次数

YAWS如何处理并发用户

我希望每次新客户端使用其Web服务器时都知道YAWS中正在执行哪些代码...

首先,我尝试了解YAWS如何处理并发用户...并查看以下.yaws页面:

io:format("~nProcess Identifier: ~p  Port: ~p  Client: ~p  YAWS pid: ~p ~n",[self(), A#arg.clisock, A#arg.client_ip_port, A#arg.pid]).
Run Code Online (Sandbox Code Playgroud)

应该返回每个客户端的Pid,端口和IP ...我在同一个浏览器(Firefox)上打开了这个页面并打开了两个不同的标签...这是打印的:

Process Identifier: <0.65.0>  Port: #Port<0.1211>  Client: {{127,0,0,1},60451}  YAWS pid: <0.65.0> 

Process Identifier: <0.65.0>  Port: #Port<0.1211>  Client: {{127,0,0,1},60451}  YAWS pid: <0.65.0> 
Run Code Online (Sandbox Code Playgroud)

由于某种原因,返回相同的端口和pid(因此,YAWS不为每个客户端创建新端口或新pid).

当我在Chrome上试用这个时,会打印出来:

Process Identifier: <0.71.0>  Port: #Port<0.2998>  Client: {{127,0,0,1},60543}  YAWS pid: <0.71.0> 

Process Identifier: <0.71.0>  Port: #Port<0.2998>  Client: {{127,0,0,1},60543}  YAWS pid: <0.71.0> 
Run Code Online (Sandbox Code Playgroud)

因此,为什么YAWS不为同一浏览器上的每个标签打开一个新端口或pid?另外,回到原来的问题,YAWS在哪里和哪个代码产生新的PID或打开一个新的端口?

谢谢

erlang yaws

2
推荐指数
1
解决办法
200
查看次数

无法在Mac OS X 10.9上构建Yaws

我下载了Yaws 1.98,但在执行时./configure && make如果失败并显示以下消息:

gcc -c -g -O2 -I/usr/include/security -m64 -I/usr/include/pam -DHAVE_SENDFILE -I"/usr/local/lib/erlang/usr/include" -I/usr/include/pam/  epam.c
epam.c:2:10: fatal error: 'pam_appl.h' file not found
#include <pam_appl.h>
         ^
1 error generated.
make[1]: *** [epam.o] Error 1
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何建议?有没有其他方法可以在Mac OS X 10.9上运行最新版本的Yaws?

macos yaws

2
推荐指数
1
解决办法
919
查看次数

选择Erlang网络服务器

是的,主观的问题.但是这里有很多这样的问题得到了很好的答案.所以现在我必须尝试使用​​Erlang开发一些REST API,因为我从google获得了我必须安装一些网络服务器,例如Cowboy,Webmachine,Yaws,Mociweb.但是我能找到的所有信息都太旧了,似乎不是真实的.那么服务器仍在继续开发,我该如何为我选择?我这样错了吗?

erlang webserver yaws webmachine cowboy

2
推荐指数
1
解决办法
590
查看次数

在Yaws网络服务器上进行上传

我在Yaws 2.0上测试脚本upload2.yaws但是没有用.这个剧本是为Yaws 1.57开发的.

雅司的日志是:

POST /html/upload2.yaws HTTP/1.1
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Host: 192.168.26.10
Referer: http://192.168.26.10/html/upload2.yaws
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36
Cookie: gsScrollPos=0; gsScrollPos=0
Content-Length: 1587
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5zKIyUtdiK82R4de
Accept-Language: pt,en-US;q=0.8,en;q=0.6,pt-BR;q=0.4
Accept-Encoding: gzip, deflate
Https: 1
Origin: http://192.168.26.10
Cache-Control: max-age=0


upload.yaws:multipart/3 State=filename=undefined rlist=undefined data=undefined
upload.yaws:multipart/3 result
upload.yaws:process_part/4d State=filename=undefined rlist=undefined data=undefined
upload.yaws:multipart/3 done
upload.yaws:result_ehtml/3 error Reason=Error: filename not found in header.
Worker: <0.78.0> 
[2015-07-24 13:50:54.795] ===== SRV -> CLI =====
HTTP/1.1 200 OK
Server: …
Run Code Online (Sandbox Code Playgroud)

erlang yaws large-file-upload

2
推荐指数
1
解决办法
271
查看次数

如何在Yaws/Erlang中重写URL

如何在不包含延伸的情况下访问yaws文件?说,

www.domain.com/listen.yaws => www.domain.com/listen

我从yawsdocumentation/appmod中找不到任何具体的文档.

我认为这个问题最终得到澄清!

erlang yaws

2
推荐指数
1
解决办法
159
查看次数

Mnesia在由Yaws运行时无法创建表,但是可以在从Erlang shell运行时创建

我有一个.yaws文件,它调用我写setup/0authenticate模块中的函数,我把它放在ebin目录中.当我authenticate:setup/0从Erlang shell 调用时,它创建一个表就好了,但是当我在浏览器中加载something.yaws时,调用该authenticate:setup/0函数,它返回{aborted,{bad_type,users,disc_copies,nonode@nohost}}(something.yaws只返回authenticate:setup/0嵌入在html中的返回值以进行调试) .

这是setup/0功能:

setup() ->
    mnesia:create_schema([node()]),
    mnesia:start(),
    mnesia:create_table(users, [{type, set}, {record_name, user}, {disc_copies, [node()]}, {attributes, record_info(fields, user)}]).
Run Code Online (Sandbox Code Playgroud)

这是user记录:

-record(user, {username, hashed_pw, salt}).
Run Code Online (Sandbox Code Playgroud)

(我已经尝试在浏览器中尝试之后从Erlang shell调用它,因此无法干扰它.)

如果我跑yaws --mnesiadir /usr/local/lib/yaws-appmods/mnesia/,我得到

Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:true]

Eshell V8.1  (abort with ^G)
1> 
=INFO REPORT==== 7-Nov-2016::00:04:49 ===
Yaws: Using config file /etc/yaws/yaws.conf

=INFO REPORT==== 7-Nov-2016::00:04:49 ===
Yaws: Using global subconfig …
Run Code Online (Sandbox Code Playgroud)

erlang yaws mnesia erlang-shell web

2
推荐指数
1
解决办法
149
查看次数

是否可以在运行时添加YAWS appmods配置?

我在生产环境中的应用程序中嵌入了YAWS,并使用该函数yaws:start_embedded/4启动YAWS.

以下是我的代码:

Id = "my_server",
GconfList = [{logdir, "./log"}, {id, Id}],  
SconfList = [{docroot, Docroot},
  {port, Port},
  {listen, Listen},
  {appmods, [      
    {"/rest", mod_rest, []},
    {"/file", mod_file, []}      
  ]}
],
yaws:start_embedded(Docroot, SconfList, GconfList, Id).
Run Code Online (Sandbox Code Playgroud)

我想添加另一个appmod,例如: {"/upload", mod_upload, []}

是否可以在运行时添加appmod而无需重新启动YAWS?

erlang yaws

2
推荐指数
1
解决办法
103
查看次数

雅司病样本文件

我目前正在尝试使用YAWS了解并查找网页案例研究.除了源代码附带的默认代码之外,任何人都知道我能找到的任何样本页面吗?

谢谢,

erlang yaws

1
推荐指数
1
解决办法
818
查看次数

当程序不再需要它时,销毁数据结构 - Erlang

某些TuplesErlang中操作的函数会在操作后生成新元组的副本.在大多数情况下,程序不再对创建新元组的旧元组副本感兴趣.让我们看一个例子:

change(Position,Tuple1,NewValue) when size(Tuple1) > 10,Position < 10 ->
    NewTuple = erlang:setelement(Position, Tuple1, NewValue),
    %% at this point i don't want Tuple1
    %% I want to destroy Tuple1 at this point !
    %% how do i do it
    erlang:send(myprocess,NewTuple),
    ok.

在上面的示例中,我从现有元组创建一个新元组.如果我随后要这样做,我会想要破坏我自己的旧副本.我有一种感觉,编译器/运行时系统会自动执行此操作,但如果是这样,他们就不会给我们提供如下功能:erlang:garbage_collect/0.我们肯定他们意识到我们可能需要隐式地管理我们的内存,可能它会使程序免于崩溃并找到通过代码的内存密集部分的方式.

我明白,在它中erlang shell,它可能会让它忘记一个变量(假设他们的意思是破坏变量)使用f/0, f/1.但是,似乎我不能在我的模块/功能中使用它.我还怀疑在变量名称前面放置一个下划线可能会加速运行时系统的破坏,即在我的代码中写入的一些内容:_Tuple1to destroy Tuple1

.总之,问题是,如果我随后将从现有的元组创建元组,并且在每一步我想立即销毁旧副本(我自己),我该怎么做? *注意*我明白效率指南禁止这个,但是,如果我别无选择.....

伙计们帮忙,你的解决方案是什么?谢谢

erlang yaws mnesia mochiweb nitrogen

0
推荐指数
1
解决办法
181
查看次数

当使用yaws_api特定代码时,雅司"进程死亡"

我有一个小的yaws appmod测试:

-module(webservice).
-include("../include/yaws_api.hrl").
-compile(export_all).

http(parse_query,Arg) ->
    yaws_api:parse_query(Arg);

out(Arg) -> 
    {html, [http(parse_query,Arg)]}.
Run Code Online (Sandbox Code Playgroud)

当yaws_api:parse_query函数运行时,我从yaws交互模式获得以下ERROR REPORT:

Yaws process died: {function_clause,
                   [{yaws_server,binary_size,
                        [0,{"i",undefined}],
                        [{file,"yaws_server.erl"},{line,3015}]},
                    {yaws_server,binary_size,2,
                        [{file,"yaws_server.erl"},{line,3018}]},
                    {yaws_server,binary_size,2,
                        [{file,"yaws_server.erl"},{line,3018}]},
                    {yaws_server,deflate_accumulated,4,
                        [{file,"yaws_server.erl"},{line,3712}]},
                    {yaws_server,deliver_accumulated,4,
                        [{file,"yaws_server.erl"},{line,3666}]},
                    {yaws_server,finish_up_dyn_file,2,
                        [{file,"yaws_server.erl"},{line,2745}]},
                    {yaws_server,aloop,4,
                        [{file,"yaws_server.erl"},{line,1175}]},
                    {yaws_server,acceptor0,2,
                        [{file,"yaws_server.erl"},{line,1016}]}]}
Run Code Online (Sandbox Code Playgroud)

appmod在config中设置:

<server localhost>
    port = 8080
    listen = 127.0.0.1
    #docroot = /usr/share/yaws
    docroot = /usr/lib/yaws/www
    appmods = </,webservice>
    # dir_listings = true
</server>
Run Code Online (Sandbox Code Playgroud)

erlang yaws

0
推荐指数
1
解决办法
191
查看次数