Ho lavorato a un brainstorming per un po 'riguardo all'approccio migliore per distribuire i moduli closed-source. Vorrei menzionare che ho trovato domande simili su siti SE, ma non penso che questo sia esattamente lo stesso scenario.
Diciamo che ho scritto un insieme di classi PHP ben testate che ho usato come nucleo per più progetti (il copyright è mio). Ha EntityManager, ACL, ORM, Cacheing configurabile, Funzionalità del pannello di amministrazione di registrazione delle azioni ecc. Che può essere molto utile in qualsiasi progetto basato su database. (Non iniziamo argomento per quanto riguarda l'integrità del progetto stesso;)
Il mio piano è di implementare SAAS con l'attuale serie di funzionalità, ma il problema è che la maggior parte delle persone che ho discusso vorrebbe fosse ospitata nei loro server e non mi dispiacerebbe pagare una piccola quota di fedeltà ricorrente. Ciò porta alla domanda finale di scegliere il modo migliore di distribuire tale modulo / micro-quadro.
Ho trovato le seguenti opzioni da considerare:
Estensione PHP : La prima soluzione che arriverà a chiunque è di sviluppare e distribuire come estensione php standard (che controllerà il codice di licenza valido nella cache una volta ogni tanto e un cronjob aggiornerà periodicamente la licenza dal server di licenza). Ho controllato php-cpp.com riguardo questo e mi è sembrato piuttosto impressionante. Una delle maggiori difficoltà è che l'estensione dovrebbe essere in grado di parlare a mysql / redis ecc (basato sulle configurazioni trasmesse per istanziare l'oggetto) da solo. Al momento, le attuali classi di php utilizzano l'estensione MySQL e PHPRedis. Mi piacerebbe poter aggiungere funzionalità di Mongodb, Cassandra / ElasticSearch nel prossimo futuro. Non sono sicuro di come potrebbe essere raggiunto. Se qualcuno può far luce su come un'estensione può eseguire internamente una query mySQL, sarebbe di grande aiuto.
Zephir : Ho visto alcuni benchmark delle prestazioni e Phalcon è uno dei migliori concorrenti. Il principale vantaggio per me è che Zephir è php-like e ci vorrà molto meno tempo rispetto alla scrittura dell'estensione C ++. Ma guardando i forum di discussione, sembra che Zephir sia un po 'crudo. Quando sarà pronto per la produzione, php stesso introdurrà PHP7 / NG . Inoltre, la stessa difficoltà nella scrittura dell'estensione è presente qui.
HHVM : Probabilmente, la migliore soluzione in quanto converte tutto in byte-code e non dovrò preoccuparmi della difficoltà dell'estensione qui. Ma ho un nuovo problema: non sarò in grado di consentire agli utenti di collegare la loro funzione (funzione anonima) agli eventi attivati nel mio modulo (ad esempio OnDuplicate () o OnPost ()).
Ogni idea, risorsa o commento è molto apprezzata. Grazie.