Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Node with PHP?
Forum PHP.pl > Forum > PHP
ZiaRek
Czy istnieje jakiś sposób na swobodną wymianę danych pomiędzy Node.JS a PHP. Mam tu na myśli np. taką sytuację :

Piszę w Node a chce skorzystać z Doctrine2 która jest biblioteką PHP. Po stronie klienta wysyłam żądanie AJAX do skryptu PHP który zawiera potrzebne mi funkcje Doctrine2 które przygotowują mi dane. Dostaje odpowiedź po stronie klienta i za pomocą Socket.io przesyłam to do serwera Node. To tak w teorii. Tylko problem który napotkałem to jak uruchomić skrypt PHP na serwerze Node. Obecnie korzystam z tego :

http://www.scriptol.com/javascript/nodejs-php.php

Ale dostaje błąd metody GET gdy próbuje obejrzeć wynik na moim porcie.
nospor
Temat: Jak poprawnie zatytulowac watek
Tytulem Twojego wątku nie ma byc Twoj nick :/ Popraw proszę tytuł na właściwy
Pyton_000
Może to:
http://www.scriptol.com/javascript/nodejs-php.php
ZiaRek
Może trochę kodu

INDEX.HTML

  1. <!doctype html>
  2. <head>
  3. <title>ZiaRek</title>
  4. <meta charset="utf-8">
  5. <script type="text/javascript" src="./jquery-2.1.0.min.js"></script>
  6. <script type="text/javascript" src="./client.js"></script>
  7. <body>
  8. <div id="content"> </div>
  9. </body>
  10. </html>


SCRIPT.PHP

  1. <?php
  2.  
  3. $idOp = filter_input(INPUT_POST, 'ID');
  4.  
  5. if ($idOp == 1) {
  6.  
  7. $output = 'Czy działa PHP';
  8.  
  9. echo $output;
  10.  
  11. }


SERVER.JS

  1. var express = require('express'), app = express()
  2. ,path = require("path")
  3. ,url = require("url")
  4. ,runner = require("child_process");
  5.  
  6.  
  7. app.use(express.static(__dirname + '/'));
  8.  
  9.  
  10. function sendError(errCode, errString, response)
  11. {
  12. response.writeHead(errCode, {"Content-Type": "text/plain;charset=utf-8"});
  13. response.write(errString + "\n");
  14. response.end();
  15. return false;
  16. }
  17.  
  18. function sendData(err, stdout, stderr, response)
  19. {
  20. if (err) return sendError(500, stderr, response);
  21. response.writeHead(200,{"Content-Type": "text/plain;charset=utf-8"});
  22. response.write(stdout);
  23. response.end();
  24. }
  25.  
  26. function runScript(exists, file, param, response)
  27. {
  28. if(!exists) return sendError(404, 'File not found', response);
  29. runner.exec("php " + file + " " + param,
  30. function(err, stdout, stderr) { sendData(err, stdout, stderr, response); });
  31. }
  32.  
  33. function php(request, response)
  34. {
  35. var urlpath = url.parse(request.url).pathname
  36. ,param = url.parse(request.url).query
  37. ,localpath = path.join(process.cwd(), urlpath);
  38. path.exists(localpath, function(result) { runScript(result, localpath, param, response)});
  39. }
  40.  
  41. require("http").createServer(php).listen(8080);
  42.  


CLIENT.JS

  1. function laduj(paramID){
  2.  
  3. $.ajax({
  4.  
  5. 'url': 'script.php',
  6. success:function(odp){
  7. $("#content").text(odp);
  8. },
  9. 'data': {
  10. 'ID' : paramID,
  11. },
  12. 'type' : 'POST'
  13. });
  14.  
  15. }
  16.  
  17. $(function() {
  18.  
  19. laduj(1);
  20.  
  21. });
by_ikar
Um nie prościej pobrać te dane bezpośrednio w node korzystając z jakiejś biblioteki do łączenia się z mysql'em?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.