J'ai actuellement un problème lors de l'exécution de l'application serveur Phoenix. Cette erreur est affichée lorsque j'ai essayé d'accéder à 'localhost: 4000'. Il se plaint qu'il ne peut pas trouver le processus memcached à l'exécution comme indiqué ci-dessous.Erreur "Impossible de trouver memcached proc" lors de l'exécution de l'application Phoenix dans Elixir
[error] #PID<0.558.0> running MyApp.Endpoint terminated Server: localhost:4000 (http) Request: GET/
** (exit) an exception was raised:
** (RuntimeError) cannot find memcached proc
(plug_session_memcached) lib/plug_session_memcached.ex:130: Plug.Session.MEMCACHED.get/3
(plug) lib/plug/session.ex:74: anonymous fn/5 in Plug.Session.fetch_session/1
(plug) lib/plug/debugger.ex:211: Plug.Debugger.maybe_fetch_session/1
(plug) lib/plug/debugger.ex:174: Plug.Debugger.render/6
(plug) lib/plug/debugger.ex:153: Plug.Debugger.__catch__/5
(myapp) lib/myapp/endpoint.ex:1: MyApp.Endpoint.call/2
(plug) lib/plug/adapters/cowboy/handler.ex:15: Plug.Adapters.Cowboy.Handler.upgrade/4
(cowboy) src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
Voici mes dépendances: -
{:coherence, "~> 0.3"},
{:comeonin, "~> 2.4"},
{:cowboy, "~> 1.0"},
{:excoveralls, "~> 0.5", only: :test},
{:gettext, "~> 0.11"},
{:httpoison, "~> 0.10.0"},
{:lager, github: "basho/lager", tag: "3.2.4", override: true},
{:mailgun, "~> 0.1.2"},
{:mariaex, ">= 0.0.0"},
{:mcd, github: "EchoTeam/mcd"},
{:phoenix, "~> 1.2.1"},
{:phoenix_ecto, "~> 3.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_live_reload, "~> 1.0", only: :dev},
{:phoenix_pubsub, "~> 1.0"},
{:plug_session_memcached, github: "gutschilla/plug-session-memcached"},
{:timex, "~> 2.2.1"},
{:timex_ecto, "~> 1.1.3"}
Il est très probablement un problème avec mes paramètres de Plug.Session memcached dans endpoint.ex parce que quand je suis passé à l'aide: les cookies comme mon magasin, il fonctionne comme prévu mais pas pour: memcached. Toute aide serait très appréciée.
C'est le code où il jette l'erreur d'argument dans Plug.Session.MEMCACHED
@max_tries 100
def init(opts) do
Keyword.fetch!(opts, :table)
end
def get(conn, sid, table) do
case :mcd.get(table, sid) do
{:error, :noproc} -> raise ArgumentError, "cannot find memcached proc"
{:error, :notfound} -> {nil, %{}}
{:error, :noconn} -> {nil, %{}}
{:ok, data } -> {sid, data}
end
end
def put(_conn, nil, data, table) do
put_new(data, table)
end
def put(_conn, sid, data, table) do
:mcd.set(table, sid, data)
sid
end
def delete(_conn, sid, table) do
:mcd.delete(table, sid)
:ok
end
defp put_new(data, table, counter \\ 0)
when counter < @max_tries do
sid = :crypto.strong_rand_bytes(96) |> Base.encode64
put(nil, sid, data, table)
end
Avez-vous suivi toutes les instructions du README de plug-session memcached (en particulier l'ajout de ces ajouts à l'application '/ 0'): https : //github.com/gutschilla/plug-session-memcached#synopsis? – Dogbert
oui, tout a été ajouté. Il a des problèmes à essayer d'obtenir le sid de la table memcached et je ne sais pas pourquoi –