PDA

View Full Version : اجرای یک برنامه مثل Word توسط PHP



bybrida
شنبه 30 مرداد 1389, 11:31 صبح
سلام
من احتیاج دارم که برنامه ای که دارم مینویسم وسط اجرا یک برنامه دیگه رو باز کنه. من روی دستگاهم wampserver رو نصب کردم ولی هر کاری که میکنم این قسمت اجرا نمیشه ... هم با exec , system و هم با ``echo امتحان کردم ولی مدت طولانی طول میکشه تا برنامه اجراش تموم بشه .... Timeout رو رو 300 هم گذاشتم تا ببینم اصلا اجرا میشه یا نه ولی موفقیت آمیز نبود
من برای ادیتور php از NuSphere استفاده کردم و جالبه که وقتی تو این برنامه فایل php رو اجرا میکنم کامل اجرا میشه و word رو باز میکنه .... php.ini رو هم چک کردم و با هم فرقی ندارند ... نمیدونم چرا وقتی از IE یا Firefox اجرا میکنم جواب نمیده ولی تو برازر خود NuSphere درست کار میکنه
کسی چیزی به ذهنش میرسه؟

eshpilen
شنبه 30 مرداد 1389, 19:37 عصر
دستور start رو امتحان کن.
مثلا:

system('start notepad')

bybrida
یک شنبه 31 مرداد 1389, 11:31 صبح
مرسی از جوابت
با این دستور الان امتحان کردم. برام اون برنامه را باز نمیکنه ...ولی وقتی تو پراسس ها میرم اونجا نشون میده که برنامه اجرا شده ....ولی به این صورت که یوزر خودم برنامه رو اجرا نکرده و SYSTEM اجراش کرده
نکته جالب اینه که وقتی خط زیر رو که مربوط به برنامه Nusphere هست رو در URL میزنم کاملا درست اجرا میشه و برنامه ای که میخوام رو اجرا میکنه
http://localhost:8080/file:/C:/wamp/www/emailcheck/test1.php

eshpilen
یک شنبه 31 مرداد 1389, 14:15 عصر
شما یه برنامهء PHP در localhost داری که توی مرورگر ازش استفاده میکنی و بعد یه گزینه ای چیزی داره مثلا لینکی که روش کلیک میکنی میخوای یه فایلی که روی هاردت هست رو با MS Word باز بکنه؟
اگر اینطوری هست و این روشها جواب نمیده، احتمالا باید از یه برنامهء واسط استفاده کنی. یعنی یه برنامهء دیگه که با PHP نوشته نشده، و هروقت PHP میخواد اون کار رو بکنه کافیه به این برنامه خبر بده تا این برنامه کار باز کردن فایل در نرم افزار Word رو انجام بده.
خلاصه کار یخورده پیچیده میشه. باید یه برنامه بنویسی و تست کنی خلاصه. اول یه تست ساده با یه برنامهء واسط خیلی ساده. بعد فکر طرز ارتباط PHP با اون رو میکنی. مثلا یه برنامهء C بنویس که یک فایل رو در نرم افزار مربوطه باز میکنه (اگر با سی و تابع system نشد، میتونی از توابعی که در کتابخانه های GUI/App programing هست استفاده کنی)، بعد این برنامه رو با PHP اجرا کن. اگر این کار نکرد، احتمالا باید برنامه C رو بصورت دستی اجرا کنی (یا توی Startup ویندوز بذاری) و بعد از طریق PHP بهش فرمان بدی.

bybrida
دوشنبه 01 شهریور 1389, 08:59 صبح
بله دقیقا ....برنامه قراره بعد از اینکه یک سری کارهای چک ایمیل و اینها رو انجام داد برنامه Arcgis رو اجرا کنه (وقتی داشتم تست میکردم Arcgis رو نداشتم اینه که مثال ها شد Word) و خود Arcgis هم بعد از اینکه یک سری پردازش رو انجام داد یک تعدادی خروجی داشته باشه بعدش دوباره برنامه php یک سری فایل رو upload کنه تو سایت .... الان همه قسمت ها جدا جدا کار میکنه فقط تو این قسمتش موندم که اصلا کار درستیه که از طریق لوکال هاست یک برنامه دیگه رو run کنم یا اینکه نه؟

eshpilen
دوشنبه 01 شهریور 1389, 16:47 عصر
خب بستگی داره.
یعنی شما یک برنامهء دسکتاپ دارید با فناوری وب (یا بخشی از اون رو با فناوری وب) مینویسید؟
و علت این رویه چی بوده؟

bybrida
سه شنبه 02 شهریور 1389, 12:18 عصر
والله من وسط یه پروژه اومدم
پروژه این بوده که وقتی یک سری شرط های خاص اتفاق افتاد برنامه Arcgis اجرا بشه و یک سری خروجی تولید میکنه ... این خروجی ها (عکس) باید در سایت ما نشون داده بشه .... من با زبان های دیگه آشنایی نداشتم اینه که تصمیم گرفتم با PHP بنویسم و تو این قسمت گیر کردم

bybrida
دوشنبه 15 شهریور 1389, 10:55 صبح
راهی نداره؟
حالا با Php نه با ابزارهای دیگه چی؟

binyaft
دوشنبه 15 شهریور 1389, 11:15 صبح
من از Xampp رو ویندوز استفاده میکنم
این کد رو نوشتم کار کرد ، اگه برای شما هم کار کرد خبرشو بده

exec('c:\windows\notepad.exe');
فقط ادرس فایل رو خودت هر جایی که فایل هست بنویس

bybrida
دوشنبه 15 شهریور 1389, 12:00 عصر
من هم از wamp روی ویندوز استفاده میکنم .... برای من این کد کار نکرد .... یعنی زمان زیادی صفحه در loading می مونه و چیزی اجرا نمیشه
ولی وقتی از داخل NuSphre اجراش میکنم کاملا درست کار میکنه

bybrida
یک شنبه 21 شهریور 1389, 09:05 صبح
من ومپ رو با زمپ عوض کردم و درست شد ... یعنی برنامه word رو اجرا میکنه ... حالا یه مشکل دیگه دارم و اینه که تا وقتی برنامه word رو نبندم ادامه برنامه Php ام اجرا نمیشه

binyaft
یک شنبه 21 شهریور 1389, 10:28 صبح
خوب این هست دیگه ، تا شما به دستور پایان ندی صفحه در حالت لودینگ میمونه

bybrida
دوشنبه 22 شهریور 1389, 15:36 عصر
این برنامه داشت کار میکرد ... من هم هنوز چیزی رو تغییر ندادم ... ولی نمیدونم چی شد که باز از کار افتاد

eshpilen
دوشنبه 22 شهریور 1389, 23:59 عصر
این روش رو امتحان کن (فایل ضمیمه).
قبل از اینکه آدرس فایل test.php رو در مرورگر وارد کنی، فایل app_launcher.exe رو اجرا کن. البته وقتی اجراش میکنی هیچ نمود ظاهری ای نداره؛ یعنی پنجره ای یا خط فرمانی باز نمیشه، ولی برنامه در بکگراند بصورت دایمی درحال اجرا هست که میتونی توی پراسس منیجر ببینیش.

البته این برنامه رو سریع نوشتم و بهینه نشده و صرفا برای نشون دادن روش کلی هست، وگرنه بنظرم باید برنامهء app_launcher.cpp بهینه بشه. عمدتا منظورم اینه که توی حلقهء while باید از یک تابعی مثل sleep استفاده بشه (من توی سی++ پیدا نکردم و ظاهرا نیاز به کتابخانه های اضافی داره) که مثلا در هر بار اجرای حلقه، برنامه به مدت یک ثانیه به خواب بره (تا CPU آزاد باشه).

bybrida
سه شنبه 23 شهریور 1389, 07:41 صبح
من دیروز هر کار کردم نشد پستم رو ویرایش کنم
نشستم بررسی کردم که چیا رو تغییر دادم و دیدم که apache-mysql رو جز سرویس های ویندوز گذاشتم ... اونها رو که برداشتم درست شد ... یعنی وقتی جز سرویس های ویندوز باشه برنامه word رو تو پراسس منیجر یوزر system اجرا میکنه ولی اگه نباشه یوزر خودم

eshpilen
سه شنبه 23 شهریور 1389, 14:21 عصر
این روش رو امتحان کن (فایل ضمیمه).
قبل از اینکه آدرس فایل test.php رو در مرورگر وارد کنی، فایل app_launcher.exe رو اجرا کن. البته وقتی اجراش میکنی هیچ نمود ظاهری ای نداره؛ یعنی پنجره ای یا خط فرمانی باز نمیشه، ولی برنامه در بکگراند بصورت دایمی درحال اجرا هست که میتونی توی پراسس منیجر ببینیش.

البته این برنامه رو سریع نوشتم و بهینه نشده و صرفا برای نشون دادن روش کلی هست، وگرنه بنظرم باید برنامهء app_launcher.cpp بهینه بشه. عمدتا منظورم اینه که توی حلقهء while باید از یک تابعی مثل sleep استفاده بشه (من توی سی++ پیدا نکردم و ظاهرا نیاز به کتابخانه های اضافی داره) که مثلا در هر بار اجرای حلقه، برنامه به مدت یک ثانیه به خواب بره (تا CPU آزاد باشه).
باید اضافه کنم که، بنظرم میشه مرحلهء اجرای برنامهء app_launcher.exe رو هم به درون فایلهای PHP برد. یعنی دیگه نیازی نباشه این برنامه رو بصورت دستی یا با گذاشتن در Startup ویندوز اجرا کنیم و اینکار توسط خود برنامهء PHP صورت بگیره.
پ.ن:
اینو گفتم اصلا یه روش دیگه برای این کار به ذهنم رسید!! اما مثل اینکه مشکل شما از راه دیگری حل شده و نیازی به بحث و کار بیشتری روی این مسئله نیست. درسته؟

bybrida
چهارشنبه 31 شهریور 1389, 08:21 صبح
ببخشید نمیدونم چرا این باخبر سازی کار نکرد و من الان جواب شما رو دیدم
بله در حال حاضر برنامه ام داره کار میکنه ... با همون زمپ جواب داد